与SVN相比,Git如何处理分支?

时间:2014-02-13 21:51:28

标签: git svn branch dvcs

相对简单的问题,但我在互联网上找不到多少。我的所有搜索结果都只显示了如何使用git branches,但没有解释它的不同之处。

我知道使用SVN,创建trunk的新分支意味着创建trunk的完整副本,进入'branches'目录,我也知道Git 创建完整复制像SVN - 所以它做什么?这更像是在我的DVCS研究文档中写下事实而不是任何事情。

与SVN相比,对此的扩展可能是git如何处理标签?

提前致谢。

2 个答案:

答案 0 :(得分:3)

在git中,分支只是指向某个修订的指针。在任何时候,您都可以返回任何旧版本(git checkout [revision]),指向其中的另一个分支(git checkout -b new-branch),然后从该点开始工作。

您可以使用gitk命令浏览分支树,并且可以通过右键单击修订等来创建分支。此工具通常有助于使引擎盖下的内容更清晰。 (如果您使用的是Mac OS,那么还有gitx,我不能没有这样做)

答案 1 :(得分:1)

简单来说:在Git中,分支就像一个标签,区别在于这个标签是由Git本身移动的。

换句话说:分支只是指向提交。当你在一个分支上并提交时,会创建一个新的提交,并更新“分支标记”。

要使理论不那么理论化,你可以进入.git/refs/branches并且每个分支都会看到一个文件。这些文件只包含他们指向的提交的sha1。