我最近开始在git中使用分支功能来维护我的github项目,并且我了解如何创建分支,在它们之间切换以及合并它们。但是,我见过的大多数示例都涉及创建一个非主分支,然后如果要保留更改则将新分支与master合并。我没有找到并行使用多个测试分支的示例。
例如,我正在尝试改进我的一个脚本,并且我有三个不同的互斥想法用于改进,所以我做three new branches.我测试不同分支的性能,{{3} }
我是否应该删除我不想要的两个分支,然后将最终分支与master合并?是否保留来自这些分支的提交,以便我可以在必要时重新访问它们,或者删除分支还删除这些提交?
我是唯一的贡献者,因此与其他贡献者的冲突没有问题。
答案 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_x
和branch_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
中可能没有意义,因为它们会使历史变得混乱。