给定一个已经使用commit提交,然后使用revert恢复的更改,那么撤消该恢复的最佳方法是什么?
理想情况下,这应该通过一个新的提交来完成,这样就不会重写历史。
给定一个已经使用commit提交,然后使用revert恢复的更改,那么撤消该恢复的最佳方法是什么?
理想情况下,这应该通过一个新的提交来完成,这样就不会重写历史。
当前回答
还原提交就像git中的任何其他提交一样。意思是,你可以恢复它,如:
git revert 648d7d808bc1bca6dbf72d93bf3da7c65a9bd746
显然,这只有在更改被推送时才有意义,特别是当您不能强制推送到目标分支时(这对于您的主分支来说是个好主意)。如果更改还没有被推送,只需要选择,还原或简单地删除还原提交。
在我们的团队中,我们有一个规则,在主分支中提交的revert提交上使用revert,主要是为了保持历史记录的干净,这样你就可以看到哪个提交还原了什么:
7963f4b2a9d Revert "Revert "OD-9033 parallel reporting configuration"
"This reverts commit a0e5e86d3b66cf206ae98a9c989f649eeba7965f.
...
a0e5e86d3b6 Revert "OD-9055 paralel reporting configuration"
This reverts commit 648d7d808bc1bca6dbf72d93bf3da7c65a9bd746.
...
Merge pull request parallel_reporting_dbs to master* commit
'648d7d808bc1bca6dbf72d93bf3da7c65a9bd746'
这样,你就可以追溯历史,弄清楚整个故事,甚至那些不了解遗产的人也可以自己找出答案。然而,如果你选择或改变内容,这些有价值的信息就会丢失(除非你在评论中包含它)。
显然,如果一个提交多次还原和重新还原,就会变得非常混乱。
其他回答
或者你可以用git checkout -b <new-branch> and git cherry-pick <commit> the before to the and git rebase to drop revert commit。像以前一样发送拉请求。
恢复还原程序就可以了
例如,
如果abcdef是你的提交,ghijkl是你还原abcdef时的提交,那么运行:
git revert ghijkl
这将还原还原
在最初意外删除所有文件的恐慌之后,我使用以下方法来取回我的数据
git reset HEAD@{1}
git fsck --lost-found
git show
git revert <sha that deleted the files>
要返回在提交后恢复的非暂存和暂存更改:
git reset HEAD@{1}
恢复所有未执行的删除操作:
git ls-files -d | xargs git checkout --
我有一个问题,有人做了一个恢复到主到我的分支,但我需要能够合并它,但问题是,恢复包括我所有的提交。 让我们看看这种情况,我们从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