我必须删除推送到原始仓库的最后两次提交,其中一次是合并提交。我想删除repo中的更改并将它们保存在我的计算机上。 当我做的时候
git revert -m 1 075cc2f
它为我的提交历史添加了一个恢复提交,我的075cc2f提交仍然存在。 当我做的时候
git push origin +HEAD^:master
提交已从历史记录中完全删除。 但是,当事情合并第二次提交时,只有在我之前推送的人的提交才会删除它。克隆回购时,我们都有一些版本“v”。他将他的承诺推到原始仓库,项目版本变为“v + 1”。我仍然使用版本“v”并通过以下方式合并项目:
➜git add .
➜git commit -am "My commit»
➜git pull
subl -w: subl: command not found
error: There was a problem with the editor 'subl -w'.
Not committing merge; use 'git commit' to complete the merge.
➜git commit -am "My commit»
➜git pull
Already up-to-date.
➜git push -u origin master
当我使用合并提交时:
git push origin +HEAD^:master
只有在我之前推送的人的提交才会被删除。 现在我想完全删除历史记录中的合并提交而不删除其他人的推送。
There is another way to do this
您可以按照以下步骤恢复不正确的提交或将远程分支重置为正确的HEAD /状态。
- 将远程分支签出到本地仓库。
git checkout development
从git log中复制提交哈希(即错误提交之前提交的id)
git log -n5
输出:
提交7cd42475d6f95f5896b6f02e902efab0b70e8038“合并分支'错误 - >>>提交'进入'开发'”
commit f9a734f8f44b0b37ccea769b9a2fd774c0f0c012“这是一个错误的提交”>
提交3779ab50e72908da92d2cfcd72256d7a09f446ba“这是正确的>>>提交”将分支重置为上一步骤中复制的提交哈希
git reset <commit-hash> (i.e. 3779ab50e72908da92d2cfcd72256d7a09f446ba)
- 运行
git status
以显示属于&gt;的所有更改&GT;错误的提交。- 只需运行
git reset --hard
即可还原所有这些更改。- 强制将您的本地分支推送到远程,并注意您的提交&gt; &GT;历史是干净的,就像污染之前一样
醇>git push -f origin development
但同样,它不仅会删除合并提交,还会删除其父级
commit b142e1ed9 has 2 parents f4cc23a + 2537c51