我正在试图弄清楚如何管理Git分支,以便为我的开发过程提供正确且可读的流程。
基本上,我们有一个主分支,一个项目分支,然后我们可以开始在这个项目分支下开发功能。我也希望能够制作分支。
说我会有主人 - >项目 - >特征1 - > feature 1 sub 1 ...
我在Hg中得到的结果如下:
我真正得到的是git:
基本上,整个开发流程都会丢失,在1年内就无法知道"接口重构"是和#34;复制速度模型"的相关和子部分。
此外,我正在避免快速合并,因为它只是失去了对所有历史的记录,但是,在几个月内,我甚至无法告诉它"更新必要的setExecutionMode"是在" InterfaceRefactoring"而不是"复制......"
我正在认真考虑回到Hg并使用插件来建立Hg和Git之间的桥梁,因为Git非常难以用户友好,但我也非常想使用公司工具,因为它仍然是现代的高效的SCM(不像SVN或CVS)。
我仍然认为我能得到我想要的东西,我只是不明白怎么做 我做错了什么?
答案 0 :(得分:1)
Git没有Mercurial所称的"命名分支。"相反,Git称之为"分支"与Mercurial所称的bookmarks非常相似。有一些差异:
foo@default
的书签被添加到存储库中)。这意味着Git的本地分支机构必须在拉动后手动快速转发,而Mercurial会自动快速转发本地书签。@
是一个特殊的书签,可能存在也可能不存在。如果是这样,克隆默认会将其检出。它可以用作指向trunk(默认分支)的指针,尽管这不是它的唯一用途。在Git中,@
是当前提交的简写," main"而分支称为master
。如果您需要类似Mercurial的分支,则应使用Mercurial而不是Git。
答案 1 :(得分:1)
Mercurial分支是附加到提交的字符串。 Git提交没有这样的专用字符串,但您可以为主题添加关键字:
有些人从bugtracker那里得到一个数字
答案 2 :(得分:0)
此外,由于您仍然使用非快进合并,因此可以通过命令请求哪些提交有助于合并
git log *mergehash*~1..*mergehash*
此范围查询也可以是各种UI,例如gitk(在视图定义中)和GitExtentions(在分支选择器中)