2024-12-08 18:14阅读: 88评论: 0推荐: 0

[ Git ] 不同场景下如何使用「撤销」操作

https://www.cnblogs.com/yeungchie/

本地的改动

Changes not staged for commit

git checkout $file

或者:

git restore $file # 推荐

已经被暂存的改动

Changes to be committed

  1. 取消暂存,将改动恢复到本地 Changes not staged 的状态。
git reset $file

或者:

get restore --staged $file # 推荐
  1. 撤销改动,恢复到 last commit 的状态,改动会丢失。
git checkout HEAD $file # `HEAD` 表示 last commit

已经被提交的改动

Your branch is ahead of 'remote/main' by 1 commit.

  1. 将改动恢复到本地编辑状态。
git reset HEAD~1
git reset --mixed HEAD^ # 等效

这里就是重置到倒数第二次 commit 的状态,并恢复到这次改动还未 add 的状态。
HEAD^ 代表 HEAD 的上一次 commit,就是倒数第二次 commit,也可以用使用 HEAD~1 来表示。

  1. 将改动恢复到暂存状态。
git reset --soft HEAD^
  1. 将这次改动删除,本地也不会保留。
git reset --hard HEAD^
  1. 将这次 commit 的修改回退并作为新的改动。
git revert HEAD

revert 之后会新增一次 commit,文件内容会恢复到「本次」改动未进行的状态。

已经被推送的改动

  1. 本地使用 revert 进行回退。
git push
  1. 本地使用 reset 进行回退。
git push -f # force

对于公共仓库或者多人协作的仓库,因该谨慎使用 force push 功能。

本文作者:YEUNGCHIE

本文链接:https://www.cnblogs.com/yeungchie/p/18593590

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   YEUNGCHIE  阅读(88)  评论(0编辑  收藏  举报
评论
收藏
关注
推荐
深色
回顶
收起

感谢支持

扫描二维码打赏

微信打赏

点击右上角即可分享
微信分享提示