管理Git分支机构和分支机构?
我试图弄清楚如何管理Git分支,以便为我的开发过程提供一个正确且可读的流程 基本上,我们有一个主分支,一个项目分支,然后我们可以在这个项目分支下开始开发特性。我也希望能做支行 假设我将拥有master->project->feature 1->feature 1 sub 1 我在Hg中得到的结果如下: 我在git下实际得到的是: 基本上,整个开发流程都丢失了,1年内将无法知道“接口重构”是相关的,是“速度模型复制”的一个子部分 此外,我正在避免快进合并,因为它只是失去了所有历史的轨道,但是,在几个月内,甚至我都无法判断“更新必要的setExecutionMode”是在“InterfaceRefactoring”而不是“复制…”下完成的 我正在认真考虑回到Hg,使用一个插件在Hg和Git之间架起一座桥梁,因为Git非常不友好,但我也非常想使用公司的工具,因为它仍然是一个现代高效的SCM(不像SVN或CVS) 我仍然认为我可以得到我想要的,我只是不知道如何得到。管理Git分支机构和分支机构?,git,mercurial,git-branch,branching-and-merging,Git,Mercurial,Git Branch,Branching And Merging,我试图弄清楚如何管理Git分支,以便为我的开发过程提供一个正确且可读的流程 基本上,我们有一个主分支,一个项目分支,然后我们可以在这个项目分支下开始开发特性。我也希望能做支行 假设我将拥有master->project->feature 1->feature 1 sub 1 我在Hg中得到的结果如下: 我在git下实际得到的是: 基本上,整个开发流程都丢失了,1年内将无法知道“接口重构”是相关的,是“速度模型复制”的一个子部分 此外,我正在避免快进合并,因为它只是失去了所有历史的轨道,但是,
我做错了什么?Git没有Mercurial所称的“命名分支”。相反,Git所称的“分支”与Mercurial所称的非常相似。有几点不同:
- 在Git中,每个头都必须有一个分支指针,否则它被认为是半不存在的(“分离头”),可能会在一段时间后被垃圾收集。此类标头不会出现在存储库历史记录中,但可以从中检索。这与Mercurial形成对比,Mercurial的书签是完全可选的
- Git始终维护“远程分支”,而Mercurial只在本地和远程书签出现分歧时才这样做(您会收到“分歧书签”警告和一个名为
已添加到存储库)。这意味着Git的本地分支必须在拉操作后手动快进,而Mercurial在拉操作时自动快进本地书签foo@default
- 在Mercurial中,
是一种特殊的书签,可能存在也可能不存在。如果是,克隆默认会将其签出。它可以用作指向主干(默认分支)的指针,尽管这不是它的唯一用途。在Git中,@
是当前提交的简写,而“main”分支被称为@
master
如果需要类似Mercurial的分支,应该使用Mercurial而不是Git。Mercurial分支是附加到提交的字符串。Git提交没有这样的专用字符串,但您可以在主题中添加关键字:
- EDF合并速度复制
- 速度快的东西
- 重构接口的东西
有些人还从bugtracker中输入了一个数字,因为您无论如何都要使用非快进合并,所以可以请求哪些提交有助于使用merge with命令
git log *mergehash*~1..*mergehash*
此范围查询也可以是各种UI,例如gitk(视图定义中)和GitExtensions(分支选择器中)我建议实际查看Git网络图,以便更准确地查看分支结构。在Git中,分支只是指向提交的指针。它不保存历史信息。我很好奇你如何避免快进合并。您是否执行额外的提交以确保合并发生?什么是git网络图?Wolf:有一个tortoiseGit合并选项:无快进(命令行:---无ff)。一般来说,功能请求和bug都应该出现在bug跟踪器中,所以不管Git和Mercurial如何,在大多数提交消息中输入bug编号都是很好的做法。谢谢。请不要说,如果我可以使用Mercurial,我肯定会:)