创建多个测试分支时的Git最佳实践

时间:2017-11-14 11:08:13

标签: git github merge version-control

我最近开始在git中使用分支功能来维护我的github项目,并且我了解如何创建分支,在它们之间切换以及合并它们。但是,我见过的大多数示例都涉及创建一个非主分支,然后如果要保留更改则将新分支与master合并。我没有找到并行使用多个测试分支的示例。

例如,我正在尝试改进我的一个脚本,并且我有三个不同的互斥想法用于改进,所以我做three new branches.我测试不同分支的性能,{{3} }

我是否应该删除我不想要的两个分支,然后将最终分支与master合并?是否保留来自这些分支的提交,以便我可以在必要时重新访问它们,或者删除分支还删除这些提交?

我是唯一的贡献者,因此与其他贡献者的冲突没有问题。

1 个答案:

答案 0 :(得分:1)

如果删除其他分支,则不会立即删除提交;但如果你提交未提交的提交,那么它们最终会被删除。有一个“垃圾收集”过程(gc)在某些时候运行(或者当你要求它运行时),它的一个任务是清理“无法访问”的对象(例如既不提交指向是ref,也没有指向其他可达提交的父指针。)

因此,如果您想保留提交以供将来参考,您可能不想删除分支。或者,如果您确实要删除分支 - 以便它们不会显示在“unmerge分支”列表或类似的东西上 - 那么您可以标记每个分支的头部,然后删除分支。

另一种选择是合并每个“错误”分支,然后恢复合并

A -------------- M1 - W1 - M2 - W2 - M3 <--(master)
 \              /         /          /
  x1 -- x2 -- x3         /          /
   \                    /          /
    y1 -- y2 -- y3 -- y4          /
     \                           /
      z1 - x2 - x3 - x4 - x5 - x6

在此示例中,如果您有branch_xbranch_y解决方案,您决定不保留,branch_z使用您决定保留的解决方案,则可以说

git checkout master
git merge x
git revert HEAD
git branch -d x
git merge y
git revert HEAD
git branch -d y
git merge z
git branch -d z

这会告诉git你已经考虑了所有三个分支的变化,但只想保留z的变化。这可以确保提交保持可访问状态,因此无法对其进行垃圾回收,并且可以删除分支。

另一方面,实际上查找旧提交,除非你标记它们,可能会很麻烦 - 如果你要标记它们以便以后可以找到它们,那么它将它们合并到master中可能没有意义,因为它们会使历史变得混乱。