---GITHow 如何undo一个已经被push到上游服务器的commit
2012-10-24 17:29
253 查看
原文:http://christoph.ruegg.name/blog/2010/5/5/git-howto-revert-a-commit-already-pushed-to-a-remote-reposit.html
文章很好啊:
重点总结:
<-> 不影响历史的情况:
1. 小的错误就立即在本地更改,然后提交,push就ok了,
2. git revert commit_id
其中commit_id可以是历史的任意一个id,而且生成一个这个id相反的更改并且自动commit,自动生成log,push后就完成了。
<二> 修改历史的情况:(在清除敏感信息的情况下有用)
1. 清除最近一次commit:
a) 直接修改上游服务器上的数据:
git push mathnet +dd61ab32^:master (mathnet 指向上游服务器)
b) 本地修改后push的方法:
git reset HEAD^ --hard
git push mathnet -f
2. 清除最近一次的上一次commit(任意一个commit都可以)
git rebase -i dd61ab32^ (dd61ab32 是任意的一次commit)
然后会弹出用vi编辑器打开的修改里表,用dd删除不应出现的更改行,然后:wq退出完成更改
git push mathnet -f
3. 修正打字
Note:-f 和 前面命令里面的+号 是a forced non-fastforward push的意思。
文章很好啊:
重点总结:
<-> 不影响历史的情况:
1. 小的错误就立即在本地更改,然后提交,push就ok了,
2. git revert commit_id
其中commit_id可以是历史的任意一个id,而且生成一个这个id相反的更改并且自动commit,自动生成log,push后就完成了。
<二> 修改历史的情况:(在清除敏感信息的情况下有用)
1. 清除最近一次commit:
a) 直接修改上游服务器上的数据:
git push mathnet +dd61ab32^:master (mathnet 指向上游服务器)
b) 本地修改后push的方法:
git reset HEAD^ --hard
git push mathnet -f
2. 清除最近一次的上一次commit(任意一个commit都可以)
git rebase -i dd61ab32^ (dd61ab32 是任意的一次commit)
然后会弹出用vi编辑器打开的修改里表,用dd删除不应出现的更改行,然后:wq退出完成更改
git push mathnet -f
3. 修正打字
Note:-f 和 前面命令里面的+号 是a forced non-fastforward push的意思。
相关文章推荐
- git cherry-pick. 如何把已经提交的commit, 从一个分支放到另一个分支
- Git:如何还原一个已经同步到远程仓库的Commit?
- git cherry-pick. 如何把已经提交的commit, 从一个分支放到另一个分支
- How To Create A Client Server Application In Minutes[如何在几分钟的时间里编写一个客户机/服务器控制台程序]
- git c#, commit本地,push服务器
- git cherry-pick. 如何把已经提交的commit, 从一个分支放到另一个分支
- Git-撤销(回退)已经add,commit或push的提交
- github删除已经push到服务器上的commit的方法
- git撤销已经push到远端的commit
- git add, commit, push如何撤销
- git如何合并只有两个commit到一个?
- 如何搭建一个git服务器?
- How to undo the last Git commit?
- git clone后,如何从远程获取某一个远程服务器上的另外一个分支
- git commit 如何修改上一个commit以及合并最近两个commit
- git cherry-pick. 如何把已经提交的commit, 从一个分支放到另一个分支
- 在git push前如何遗弃掉历史commit
- git撤销已经push到远端的commit
- Git撤销已经推送(push)至远端仓库的提交(commit)信息