Git存储库如何与开发和主分支一起使用?

时间:2011-06-02 04:13:05

标签: git

我是Git的新手,这实在令人困惑。我想开始在Git上开发一个Web应用程序,到目前为止,我一直在处理让我无所适从的麻烦。

我在Git的成功分支模型上阅读了this blog帖子。我真的很想设置类似的东西。

它表示存储库有2个主要分支,分别为masterdevelop。所以我继续创建了一个存储库。但令我惊讶的是,存储库本身是默认的master分支。我怎么会创建一个develop分支?我是否在master分支的父级中创建它?这意味着develop分支位于存储库之外。

我在这里得到了一些完全错误的东西吗?我是否只是忽略了我在主分支中创建两个分支的事实?

2 个答案:

答案 0 :(得分:29)

分支不是目录。它是一个提交标签,与提交一起移动,例如tag是一个保留特定提交的提交标签。 master分支内部没有任何内容,而masterdevelop最初都会标记相同的提交。

像这样创建开发分支:

git branch develop

澄清一下:假设您有初始提交A.它将被标记为master分支。

git init

A [master]

如果您创建新的提交B,分支标签将移动:

git commit -a

A -> B [master]

如果你然后分支到develop,B也将获得新标签:

git branch develop

A -> B [master, develop]

如果你对develop提交,它会移动,但master不会:

git checkout develop
git commit -a

A -> B [master] -> C [develop]

如果您现在提交master,树将会分叉:

git checkout master
git commit -a

A -> B -> C [develop]
     +--> D [master]

同时,您只在目录中拥有当前提交的内容。切换分支,目录内容改变。

答案 1 :(得分:14)

默认情况下会创建master分支;您可以将其视为其他VCS系统中的“主干”。 nvie分支模型中使用的develop分支从master分支,大概来自第一次提交。

develop分支是master的正常分支。

git branch develop创建develop分支。

在nvie分支模型中,所有开发工作都在develop分支上完成,只有在代码准备好发布时才合并到master并标记在那里。许多人使用的典型工作流程只是将所有开发提交到master并在代码准备好发布时进行标记。