在开发过程中可能遇到如下的场景:
场景一:commit不想提交的代码,但是还没有push
场景二:上线提交的代码有BUG,需要还原这次提交
场景三:删除之前的某一次提交
撤销
场景一,在未进行git push
前的所有操作,都是在“本地仓库”中执行的。我们暂且将“本地仓库”的代码还原操作叫做“撤销”!
情况一:文件被修改了,但未执行git add
操作
// 放弃修改的某个文件
git checkout <filename>
// 放弃所有修改的文件
git checkout .
情况二:已经使用git add
缓存代码,但还没有用git commit
提交,这时候想放弃修改
// 取消某个文件暂存
git reset HEAD <filename>
// 取消所有文件暂存
git reset HEAD
// 放弃修改
git checkout <filename>
此时只是清除暂存,如果想清除修改还需要按照情况以操作一次
情况三:修改的文件已被git commit
,但想再次修改不再产生新的Commit
git add a.txt
git commit --amend -m "描述"
情况四:已在本地进行了多次git commit
*操作,现在想撤销到其中某次Commit
// 放弃此次修改回退到上一次修改
git reset --hard HEAD^
// 回退到指定的版本
git reset --hard <commit ID>
回滚
已进行git push
。将已被提交到“远程仓库”的代码还原操作叫做“回滚”。注意:对远程仓库做回滚操作是有风险的
情况一:删除最后一次提交
方法一:使用revert
// 取消上一次的修改
git revert HEAD
git push origin master
放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在;
方法二:使用reset
git reset --hard HEAD^
git push origin master -f
将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。
情况二:撤销指定的文件导指定的版本
git log <filename>
git checkout <commit ID> <filename>
情况三:回滚某一次提交
git log --oneline
git revert <commit ID>
删除某次提交
// 查看最近的历史提交
git log --oneline
// 最近三次的
gti log --oneline -n3
git rebase -i <commit ID>^
git | Git | 撤销 | 回滚
评论区