[ Git ] 不同场景下如何使用「撤销」操作
https://www.cnblogs.com/yeungchie/
本地的改动
Changes not staged for commit
git checkout $file
或者:
git restore $file # 推荐
已经被暂存的改动
Changes to be committed
- 取消暂存,将改动恢复到本地
Changes not staged
的状态。
git reset $file
或者:
get restore --staged $file # 推荐
- 撤销改动,恢复到 last commit 的状态,改动会丢失。
git checkout HEAD $file # `HEAD` 表示 last commit
已经被提交的改动
Your branch is ahead of 'remote/main' by 1 commit.
- 将改动恢复到本地编辑状态。
git reset HEAD~1 git reset --mixed HEAD^ # 等效
这里就是重置到倒数第二次 commit 的状态,并恢复到这次改动还未
add
的状态。
HEAD^
代表HEAD
的上一次 commit,就是倒数第二次 commit,也可以用使用HEAD~1
来表示。
- 将改动恢复到暂存状态。
git reset --soft HEAD^
- 将这次改动删除,本地也不会保留。
git reset --hard HEAD^
- 将这次 commit 的修改回退并作为新的改动。
git revert HEAD
revert 之后会新增一次 commit,文件内容会恢复到「本次」改动未进行的状态。
已经被推送的改动
- 本地使用 revert 进行回退。
git push
- 本地使用 reset 进行回退。
git push -f # force
对于公共仓库或者多人协作的仓库,因该谨慎使用 force push 功能。
本文作者:YEUNGCHIE
本文链接:https://www.cnblogs.com/yeungchie/p/18593590
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步