撤消推送提交
我有一个远程存储库中的项目,与本地存储库(开发)和服务器一(prod)同步。 我一直在做一些已经被推送到远程并从服务器拉出来的改变。 现在,我想撤销这些更改。 所以我可以在更改之前将git checkout
提交并提交新的更改,但是我猜测将会有问题将它们再次推送到远程。 任何关于我应该如何进行的建议?
您可以通过以下方式恢复单个提交:
git revert <commit_hash>
这将创建一个新的提交,恢复您指定提交的更改。 请注意,它只会恢复该特定的提交,而不会在此之后提交。 如果你想恢复一系列的提交,你可以这样做:
git revert <oldest_commit_hash>..<latest_commit_hash>
它将还原指定的提交之间的提交。
查看git-revert手册页以获取有关git revert
命令的更多信息。 关于恢复提交的更多信息,也请看这个答案。
不保留“撤消”痕迹的解决方案。
注意:不要这样做,如果有人已经拉你的变化(我会用这个只在我个人的回购)
做:
git reset <previous label or sha1>
这将重新签出本地的所有更新(所以git状态将列出所有更新的文件)
那么你“做你的工作”并重新提交你的修改(注意:这一步是可选的)
git commit -am "blabla"
此时你的本地树与远程的不同
git push -f <remote-name> <branch-name>
将推动并强制远程考虑推送并删除前一个(指定远程名称和分支名称不是必需的,但建议避免更新所有具有更新标志的分支)。
! 注意一些标签可能仍然指向删除提交! 如何到删除-A-远程标签
我在这些情况下做的是:
在服务器中,将光标移回最后一次已知的良好提交:
git push -f origin <last_known_good_commit>:<branch_name>
在本地,做同样的事情:
git reset --hard <last_known_good_commit>
# ^^^^^^
# optional
查看我为此创建的分支my_new_branch
上的完整示例:
$ git branch
my_new_branch
这是将一些内容添加到myfile.py
后的最近历史记录:
$ git log
commit 80143bcaaca77963a47c211a9cbe664d5448d546
Author: me
Date: Wed Mar 23 12:48:03 2016 +0100
Adding new stuff in myfile.py
commit b4zad078237fa48746a4feb6517fa409f6bf238e
Author: me
Date: Tue Mar 18 12:46:59 2016 +0100
Initial commit
我想摆脱已经推送的最后一个提交,所以我运行:
$ git push -f origin b4zad078237fa48746a4feb6517fa409f6bf238e:my_new_branch
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:me/myrepo.git
+ 80143bc...b4zad07 b4zad078237fa48746a4feb6517fa409f6bf238e -> my_new_branch (forced update)
太好了! 现在我看到在该提交( myfile.py
)中更改的文件显示在“未提交进行提交”中:
$ git status
On branch my_new_branch
Your branch is up-to-date with 'origin/my_new_branch'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: myfile.py
no changes added to commit (use "git add" and/or "git commit -a")
由于我不想要这些更改,因此我只是将光标移回本地:
$ git reset --hard b4zad078237fa48746a4feb6517fa409f6bf238e
HEAD is now at b4zad07 Initial commit
所以现在HEAD在以前的提交中,无论是在本地还是远程:
$ git log
commit b4zad078237fa48746a4feb6517fa409f6bf238e
Author: me
Date: Tue Mar 18 12:46:59 2016 +0100
Initial commit
链接地址: http://www.djcxy.com/p/49277.html
上一篇: Undo pushed commits