侧边栏壁纸
博主头像
析木之林博主等级

山不让尘,川不辞盈。

  • 累计撰写 63 篇文章
  • 累计创建 59 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录
git

Git的撤销&回滚操作

析木
2023-03-31 / 0 评论 / 0 点赞 / 53 阅读 / 2878 字 / 正在检测是否收录...

在开发过程中可能遇到如下的场景:

场景一: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 | 撤销 | 回滚
0
git

评论区