给定一个已经使用commit提交,然后使用revert恢复的更改,那么撤消该恢复的最佳方法是什么?
理想情况下,这应该通过一个新的提交来完成,这样就不会重写历史。
给定一个已经使用commit提交,然后使用revert恢复的更改,那么撤消该恢复的最佳方法是什么?
理想情况下,这应该通过一个新的提交来完成,这样就不会重写历史。
当前回答
在最初意外删除所有文件的恐慌之后,我使用以下方法来取回我的数据
git reset HEAD@{1}
git fsck --lost-found
git show
git revert <sha that deleted the files>
其他回答
在我的例子中,我需要在恢复后提交更改,然后才能在没有失败的情况下选择原始提交。
git commit -m "Make changes (original commit)."
git revert <original commit hash>
git commit -m "Revert original commit."
git cherry-pick <original commit hash>
我有一个问题,有人做了一个恢复到主到我的分支,但我需要能够合并它,但问题是,恢复包括我所有的提交。 让我们看看这种情况,我们从M1创建了我们的特征分支,我们在M3中合并了我们的特征分支,并在RM3中恢复它
M1 -> M2 -> M3 -> M4- > RM3 -> M5
\. /
F1->F2 -
如何使F2能够合并到M5?
git checkout master
git checkout -b brach-before-revert
git reset --hard M4
git checkout master
git checkout -b new-feature-branch
git reset --hard M1
git merge --squash brach-before-revert
如果你还没有按这个改变,git重置-硬头^
否则,还原还原完全没问题。
另一种方法是git结帐HEAD^^——。然后git add -A && git提交。
如果你错误地做了一个还原:
git revert <commit-id>
你只需要运行:
git cherry-pick <commit-id>
我必须使用这个命令来提交我的更改。
你可以通过以下命令获取你的提交ID:
git log --pretty=format:"%h - %an, %ar : %s"
Git cherry-pick <原始提交sha> 将复制原始提交,本质上是重新应用提交
还原将做同样的事情,与一个更混乱的提交消息: Git revert <commit sha of revert>
这两种方式都允许您在不覆盖历史记录的情况下进行git推送,因为它会在还原后创建一个新的提交。 当输入commit sha时,通常只需要前5或6个字符: Git选择6bfabc