Git-撤销(回退)已经add,commit或push的提交
来源:互联网 发布:淘宝怎么修改一口价 编辑:程序博客网 时间:2024/06/07 19:40
Git-撤销(回退)已经add,commit或push的提交
本文只阐述如何解决问题,不会对git的各种概念多做介绍,如果有兴趣可以点击下面的链接,进行详细的学习:
Pro Git
本文适用的环境
现在先假设几个环境,本文将会给出相应的解决方法:
1. 本地代码(或文件)已经add但是还未commit;
2. 要回退的commit的代码已经commit了,但是还未push到远程个人repository
3. 要回退的commit的代码已经push到远程的个人分支,但是还未merge到公共的repository
4. 要回退的commit的代码已被merge(合入)到公共的repository
关键的几个命令
git reset [commit]
git revert [commit]
git reset有三个参数soft,mixed,hard分别对应head的指针移动,index(暂存区)、以及工作目录的修改,当缺省时,默认为mixed参数。
git revert与reset的区别是git revert会生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留,也就是说对于项目的版本历史来说是往前走的。而git reset 则是回到某次提交,类似于穿越时空。
相应的解决方法
1、 对于上面的前两种情况,我们可以直接使用git reset命令。根据需要的不同使用,不同的参数。但是要注意1.
git reset –hard
是一个危险的命令,他是git少数几个会销毁数据的命令之一,如果你不小心放了错,你也许可以使用
git reflog
命令来找回你的数据。
2、 对于第三种情况,如果你的远程分支只有你一个人用的话,那么可以在先使用git reset [commit]回退,如何使用git push -f [commit]来强制更新你的远程库2
3、 对于最后一种情况,考虑到其他人的版本历史,使用git reset [commit]是不建议的,此时我们应该使用git revert [commit]改命令不会修改之前的提交历史,相当于对数据做了一次逆操作,然后再执行add,commit等命令。
总结
对于前三种情况,虽然git revert也适用,但是如要要保持版本历史干净的话,建议还是用 git reset3,但是希望保留完整的历史的话,还是使用git revert为好。对于和其他人协同的项目,使用git rever是最好的。
- 对于第一种情况 如果只是想修改commit的内容的话,可以使用git commit –amend ↩
- [commit]表示所需要回退到的目标commit的SHA。 ↩
- 对于有些情况而言,git checkout [commit]也可以达到同样的效果,但是最好避免这样有歧义的使用方式。 ↩
- Git-撤销(回退)已经add,commit或push的提交
- 【git】git撤销 add、commit、push
- git撤销已经push到远端的commit
- git撤销已经push到远端的commit
- git撤销已经push到远端的commit
- git撤销已经push到远端的commit
- git撤销已经push到远端的commit
- git撤销已经push到远程的commit
- git add, commit, push如何撤销
- Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
- Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
- git的commit/push/add
- Git 撤销已经commit
- git在未提交commit之前,撤销回退所有操作
- git 撤销已经push上去的操作
- git使用:如何进行版本回退或只是修改已提交的commit
- Git撤销git commit 但是未git push的修改
- Git撤销git commit 但是未git push的修改
- php中 $$str 中 "$$"是什麽意思
- Mongodb数组操作$(update)、$占位符更新嵌套数组、嵌套文档集合
- myBatis逆向
- springmvc 参数绑定
- 算法刷题心得:动态规划 scramble-string
- Git-撤销(回退)已经add,commit或push的提交
- JavaScript消息框
- 模拟实现shell
- 菜鸟上路!
- Spring Data JPA注解@DynamicInsert和@DynamicUpdate
- Unity 移动端 The file 'none' is corrupted. 报错解决
- 对People类分析
- Python CGI编程
- Pytorch LSTM 时间序列预测