合并后是否最好删除分支取决于分支对您的工作流程的意义。如果它是一个用于准备新版本的分支,一旦版本准备好,它就会合并到 master 中,那么你会想要保留它。如果它是用于开发单个功能的一次性分支,那么通常最好将其删除,这样您就不会在 git branch 输出中混杂许多已完成的分支。
如果您想稍后重新创建已删除的分支,您需要做的就是找到与其上次提交对应的 SHA。如果您手边没有 reflog,则必须尝试使用 git log 找到它。最简单的方法是使用以下内容搜索合并提交:
# This should match the message of the merge commit, if you kept the default.
git log --grep=branch-name
找到合并提交后,您会看到列出了两个父级:
commit 38bf1d168e73f9fa708c334e50f256578d5c2d8f
Merge: a08b280 d7725b0
第一个parent是合并前master的状态;第二个是合并的分支的状态,这就是你想要的。在那里重新创建你的分支并检查它:
git checkout -b branch-name d7725b0
作为旁注,这仅在合并不是快进合并时才有效。快进合并只是将HEAD 压缩到正在合并的引用,因此它不会创建合并提交。您可以使用以下命令强制 git 在合并时始终进行新提交:
git merge --no-ff branch-name
如果你总是想要这种情况,你可以在你的配置中设置它:
git config branch.master.mergeoptions "--no-ff"