在我们的项目中,我们使用GIT作为SCM。作为usal,我们为新功能,复杂错误修正,下一版本等创建单独的分支。当(例如)新功能完全实现时,它们将合并到master中,这是我们的“下一版本”分支(并且在以后的测试/部署期间合并到主干和实时)。因此,在将新功能分支合并到主服务器之后,它就“死了”。目前,我删除了“死”分支,以保持分支列表小而谨慎。但正如我在最后一次删除时注意到的那样,我是以失去分支历史为代价的。
我现在的问题是:处理“死”分支的最佳方式是什么?
答案 0 :(得分:3)
我会说已经合并到主人的分支,即由
列出git branch --merged
可以而且应该用
安全删除git branch -d <merged_branch>
git push --delete origin <merged_branch>
Git的一个要点是创建(和合并)分支很容易。你应该“尽早分支”。但是让所有那些旧的被删除的分支出现在周围是混乱的。重要的历史信息是在提交中以及它们之间的关系。
请记住,合并提交的自动生成消息包含分支的名称。因此,确定原始分支名称通常没有问题(如果它包含一些有趣的信息)。
尚未合并的分支是另一回事:
git branch --no-merged
无法使用-d
删除它们,但必须使用-D
删除它们,因此很难做错。就个人而言,我最终也删除了这些,但我等了很多更长。
答案 1 :(得分:0)
有时我喜欢制作一个分支的副本,这样我就可以在合并到主服务器之前压缩提交。这意味着主分支的提交次数会少得多,而且历史记录也会更简单。
然后我将删除压扁的分支并保留原始分支,以便在本地计算机上存储更详细的历史记录。此时我建议标记分支,说它不需要合并到master上(合并不会产生任何影响)。
git tag -a s1 -m "this branch was squash into <squash commit> on master"
Mercurial允许您将分支标记为已死,以便它们不能合并到主分支上。