如何从master
分支中删除提交,而该提交是从功能分支中合并的?
最重要的是,我的本地和远程分支都被删除了。
我只有一个master分支,该分支具有从我的feature分支推送的所有提交。
--- o --- o来源/功能!!此功能分支已在本地和远程删除!!
\
---- o ----●------>来源/主控
如果我已经删除了本地和远程功能分支,是否可以从上图中删除●?
答案 0 :(得分:1)
●是将分支引入主节点的合并提交。摆脱这种承诺可能很复杂,具体取决于几个因素。您将需要重新整理来自origin/feature
的提交,并将它们替换为origin/master
上的●。与此有关的一件事是您正在更改历史记录,如果还有其他人从origin
进行更改,这将引起很多问题,因为您需要将更改强制推向origin
(除非您是唯一访问远程分支的人。
根据●之后的提交次数,这也可能很困难。
如果要执行此操作,则需要找到origin/feature
从origin/master
转移过来的提交。由于该分支已删除,因此您需要浏览该图。找到该提交后,请注意哈希值。并运行git rebase -i <sha of the diverging commit.
,这应该为您提供自那时以来发生的所有提交的列表。您应该能够重新排列它们,这将消除您的问题提交。
当git重新应用来自origin/feature
的提交时,执行这些步骤可能会导致大量重复解决冲突。它还将导致它们发生更改,您将是这些更改的提交者,并且iirc还将更改提交日期。
我不建议为此提交执行此操作。但是为了防止这种情况的发生,当您将来希望引入功能分支时。在master上执行git rebase -i <feature branch>
,而不是git merge
。这将阻止创建新的提交。