恢复合并恢复
Reverting merge revert
我已经通过这种方式恢复了合并提交(功能 -> 开发):
git revert -m 1 <merge-commit-hash>
git push origin develop
已创建一个新提交 Revert "Merge branch 'feature'"
现在我想还原该还原。我应该只使用以下命令:git revert <revert-merge-branch-commit-hash>
?
不幸的是,在大多数情况下,答案可能是是。 (您应该还原还原提交。)
我说“不幸的”是因为回想起来,这两个还原一起为您的历史添加了不必要的(并且可能令人困惑)提交。这里有两个可能的替代方案:
- 重置分支并强制推出。这会产生更清晰的历史记录,但对于
develop
等共享远程分支,条件必须近乎完美才能考虑在紧急情况之外这样做。 (我的近乎完美的意思是:分支上没有新的提交,自添加错误提交以来已经过去了很短的时间 and/or 其他人不太可能从它分支出来,等等)
- 您可以重新创建最初合并的分支,然后使用
git rebase --no-ff [merge-base-commit]
从开始提交将其重新定位到自身。这将强制 rebase 重写提交,以便它们可以重新合并。如果新的提交被添加到以前的分支并且现在它已准备好再次引入,我可能会选择这个。
但一般来说,大多数时候,在共享遥控器上 develop
,它可能会被还原。
我已经通过这种方式恢复了合并提交(功能 -> 开发):
git revert -m 1 <merge-commit-hash>
git push origin develop
已创建一个新提交 Revert "Merge branch 'feature'"
现在我想还原该还原。我应该只使用以下命令:git revert <revert-merge-branch-commit-hash>
?
不幸的是,在大多数情况下,答案可能是是。 (您应该还原还原提交。)
我说“不幸的”是因为回想起来,这两个还原一起为您的历史添加了不必要的(并且可能令人困惑)提交。这里有两个可能的替代方案:
- 重置分支并强制推出。这会产生更清晰的历史记录,但对于
develop
等共享远程分支,条件必须近乎完美才能考虑在紧急情况之外这样做。 (我的近乎完美的意思是:分支上没有新的提交,自添加错误提交以来已经过去了很短的时间 and/or 其他人不太可能从它分支出来,等等) - 您可以重新创建最初合并的分支,然后使用
git rebase --no-ff [merge-base-commit]
从开始提交将其重新定位到自身。这将强制 rebase 重写提交,以便它们可以重新合并。如果新的提交被添加到以前的分支并且现在它已准备好再次引入,我可能会选择这个。
但一般来说,大多数时候,在共享遥控器上 develop
,它可能会被还原。