我是Git的新手,这实在令人困惑。我想开始在Git上开发一个Web应用程序,到目前为止,我一直在处理让我无所适从的麻烦。
我在Git的成功分支模型上阅读了this blog帖子。我真的很想设置类似的东西。
它表示存储库有2个主要分支,分别为master
和develop
。所以我继续创建了一个存储库。但令我惊讶的是,存储库本身是默认的master
分支。我怎么会创建一个develop
分支?我是否在master
分支的父级中创建它?这意味着develop
分支位于存储库之外。
我在这里得到了一些完全错误的东西吗?我是否只是忽略了我在主分支中创建两个分支的事实?
答案 0 :(得分:29)
分支不是目录。它是一个提交标签,与提交一起移动,例如tag是一个保留特定提交的提交标签。 master
分支内部没有任何内容,而master
和develop
最初都会标记相同的提交。
像这样创建开发分支:
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
并在代码准备好发布时进行标记。