【发布时间】:2020-06-03 02:31:36
【问题描述】:
我有 2 个分支 A 和 B。 我对 A 做了一些更改并提交了它们。 然后我对 A 进行了更多更改(错误地)。 我把他们推到 B 并承诺他们。
但现在我看到 A(旧)和 B(新)的更改正在提交。我该如何恢复这个?
【问题讨论】:
-
查看
git rebase和git reset
标签: git git-commit git-push
我有 2 个分支 A 和 B。 我对 A 做了一些更改并提交了它们。 然后我对 A 进行了更多更改(错误地)。 我把他们推到 B 并承诺他们。
但现在我看到 A(旧)和 B(新)的更改正在提交。我该如何恢复这个?
【问题讨论】:
git rebase和git reset
标签: git git-commit git-push
如果您已推送提交,则意味着远程分支受到影响(不仅仅是您的本地分支)
您需要挑选从 B 到 A 的提交(假设只在 B 上错误地完成了一次提交):
git switch A
git cherry-pick B
git switch B
git reset --hard B~
git push --force
这将覆盖 B 历史记录,如果多个协作者正在远程存储库中工作,这可能会出现问题。
另一种选择是恢复 B HEAD,添加一个额外的提交,取消最后一个的内容。
git switch B
git revert @
git push
那里不需要 --force。
【讨论】:
git checkout <branchname>
git reset --hard <commitid>
这会将所有内容恢复到原始状态。如果你的意思是别的,请详细说明。
问候, 泽尼玛
【讨论】: