Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GIT-如何接近存储库,以及在创建分支后在哪里可以找到分支_Git - Fatal编程技术网

GIT-如何接近存储库,以及在创建分支后在哪里可以找到分支

GIT-如何接近存储库,以及在创建分支后在哪里可以找到分支,git,Git,这是我使用GIT的第一天,所以我有几个基本问题 1让我们假设我有一个名为Projects的文件夹,里面有20个不同的项目用于不同的客户,以此类推。其中项目1和项目2 我应该在哪里建立存储库?项目还是我应该分别从每个文件夹中创建一个存储库 2好的,我做了回购。现在我想做一个分支,我成功了。现在我在哪里可以看到我的分支文件?我希望在repo中有不同的文件夹,包括主分支和我创建的其他文件夹。1对于不同的项目,通常都有单独的Git存储库。这意味着您可以单独开发每个项目,而不必担心在必须将更改恢复到另一个

这是我使用GIT的第一天,所以我有几个基本问题

1让我们假设我有一个名为Projects的文件夹,里面有20个不同的项目用于不同的客户,以此类推。其中项目1和项目2

我应该在哪里建立存储库?项目还是我应该分别从每个文件夹中创建一个存储库


2好的,我做了回购。现在我想做一个分支,我成功了。现在我在哪里可以看到我的分支文件?我希望在repo中有不同的文件夹,包括主分支和我创建的其他文件夹。

1对于不同的项目,通常都有单独的Git存储库。这意味着您可以单独开发每个项目,而不必担心在必须将更改恢复到另一个项目时覆盖对一个项目所做的更改

2如果您是Git新手,我暂时不会担心分支。如果确实创建了分支,则不会在单独的文件夹中看到它们。跟踪分支的魔力隐藏在每个存储库的.git文件夹中


您可以通过键入git branch来查看您所在的分支。您可以使用git branch-a查看所有分支

您显然是从svn或类似svn的地方来到git的

在svn中,所有内容都基于文件夹-分支、标记和存储库都成为文件夹;回购协议中的每个子文件夹实际上都是自己的回购协议,以此类推

根据我的经验,这种版本控制模式是svn独有的。不能在其他地方应用相同的模型

特别是Git,它是基于提交的,实际上是对象,提交是对象的一种类型,但是为了让心智模型更容易开始,让我们考虑一下提交

您的存储库是一个提交树。与svn不同,提交可以有多个父级

与svn不同,Git也是分布式的,即使您以集中式存储库类型的方式使用它,这种区别也很重要。当您推拉git时,您只是将您拥有的提交树与某个远程提交树同步

而在svn中,您有一个存储库,在本地有一个工作副本,而在git中,您克隆了存储库。您在本地拥有的是一个自己的存储库,它可以有自己的提交和分支,其他人可以克隆

因此,要最终回答您的问题:

为多个项目使用单个存储库的想法是因为在svn中,子目录和不同的存储库之间通常没有区别。git不是这样,每个项目都应该有一个单独的存储库。 在git中,分支只是应用于项目提交树中特定提交的标签。提交、标签等都存放在存储库根目录的.git中的某个地方;直接查看这些文件通常没有帮助,而是使用git branch之类的命令列出分支,或者使用git checkout更改分支。
如果您想更深入地了解git的工作原理,我建议您阅读一点。没有必要使用git,但我发现有一个合理准确的心理模型来描述git在幕后的行为,这让它的行为不那么令人惊讶。

谢谢,这解释了很多。为了明确起见,我必须已经在使用分支:假设我有两个分支——master和alternate。我会:git checkout alternate并在file.txt中添加一行,我不会提交它。然后我做:git checkout master,再次打开该文件-如果我使用master,为什么会看到更改?我假设我可以在我的编辑器中打开2个版本的file.txt并查看它们之间的差异,但它似乎不是这样工作的。如果你想切换回master并覆盖你的本地状态,你可以使用git checkout-f-b branchname。这将签出回购协议的主版本,并覆盖文件系统中任何不匹配的文件。不过要小心,因为可能会丢失您所做的更改。如果要保留任何更改,请确保在切换之前将其提交到当前分支。您也可以使用git checkout filename还原单个文件,使其与当前分支中的版本匹配。@有一天,如果您在备用分支上提交更改并签出主分支,您将看不到新代码。但是,未分段的更改将在分支之间移动,因为它们未附加到特定的分支。如果您想签出另一个分支而不提交更改,我建议在切换分支之前先保存更改。好吧,我只是看到提交的更改在分支之间不可见,而未提交的更改则可见。好的,这解释了很多,thnx!不同分支的不同文件夹!愚蠢的svn你的直觉是正确的,我以前和svn一起工作过,就像你想象的那样:一定有 获得了svn类型的逻辑,因此缺乏理解。好的,非常感谢,这让它更清晰了。这不是svn所独有的,有些人偶尔会使用像Mercurial这样的DVCSE。一些Mercurial教程积极鼓励新分支的新克隆;这在概念上很简单,因为hg通过硬链接共享底层文件,所以甚至不占用那么多空间。但没错,在使用了大多数其他VCSE之后,Git是一个令人绞尽脑汁的东西-