如果我将git功能分支合并回主分支,最好删除该分支吗?
假设6个月后,我想要恢复已删除的分支(假定是一个全新克隆的仓库)。 有没有一种简单的方法来重新创建它或者找到它的历史记录,假设它已经被合并回主分支?如何做到最好?
从阅读其他问题中,我发现如果我可以找到该分支的头部,那么我可以很容易地重新创建它,但我该如何去找它呢? 一些其他的问答回复引用了“reflog”命令,但如果我刚克隆存储库,这并没有返回任何有用的信息。
git branch
输出中混杂着已完成的数十个分支。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
第一个父节点是合并之前master
分支的状态;第二个父节点是被合并分支的状态,这就是您想要的。在那里重新创建您的分支,并使用以下命令进行检出:
git checkout -b branch-name d7725b0
顺便提一下,这只适用于没有进行快进合并的情况。 快进合并只是将HEAD
移动到被合并的引用处,因此不会创建合并提交。 你可以通过使用以下命令强制git在每次合并时创建新的提交:
git merge --no-ff branch-name
如果你希望这种情况始终存在,你可以在配置文件中设置:
git config branch.master.mergeoptions "--no-ff"