git提交到本地仓库了,怎么撤回

如果你想要撤回已经提交到本地仓库的更改,可以使用以下一些Git命令:

  1. **撤回最后一次提交** (不保留更改):
  • `git reset --hard HEAD~1`:这会撤销最后一次提交,并且所有的更改都会丢失。
  1. **撤回最后一次提交** (保留更改到暂存区):
  • `git reset --soft HEAD~1`:这会撤销最后一次提交,但是更改会保留在暂存区,你可以重新提交。
  1. **撤回最后一次提交** (保留更改到工作目录):
  • `git reset --mixed HEAD~1`:这是默认选项,撤销最后一次提交,更改会保留在工作目录中。
  1. **修改最后一次提交** (例如,添加遗漏的文件或修正提交信息):
  • `git add <遗漏的文件或更改>`:将需要重新提交的文件添加到暂存区。

  • `git commit --amend`:修改最后一次提交的信息或包括新的更改。

  1. **撤回特定文件的更改**:
  • `git checkout -- <file>`:放弃对特定文件的更改。
  1. **撤回所有未提交的更改**:
  • `git reset --hard`:放弃所有未暂存和已暂存的更改。

  • `git clean -fd`:清除所有未跟踪的文件和目录。

  1. **解决冲突后撤回**:
  • 如果在合并或拉取时出现冲突,解决了冲突后,使用`git add`将解决后的文件添加到暂存区,然后`git commit`完成提交。
  1. **使用暂存区(stash)功能**:
  • `git stash`:暂存当前工作进度,包括未提交的更改。

  • `git stash pop`:恢复之前暂存的工作进度。

  1. **回滚到特定提交** (不保留之后的提交):
  • `git reset --hard <commit>`:将HEAD、索引区和工作目录都回滚到指定的提交。

请注意,使用`--hard`选项会丢失所有更改,因此在使用之前请确保这是你想要的操作,或者你已经备份了你的工作。如果你想要撤回已经推送到远程仓库的提交,那么情况会更复杂一些,可能需要使用`git push`的强制推送选项,但这会影响其他协作者的仓库状态。


注意:

撤回最后一次提交 (保留更改到暂存区)撤回到git add .这个命令运行后,撤回最后一次提交 (保留更改到工作目录)这个是撤回到没有执行git add .前

也就是:

  • `git reset --soft HEAD~1`:这个命令会撤回最后一次提交,但保留更改在暂存区(staged)。这意味着所有在最后一次提交中所做的更改仍然被标记为将要提交的(即它们在暂存区)。这个命令不会改变工作目录(working directory),即工作目录中的文件不会被撤销更改。

  • `git reset --mixed HEAD~1`(或简单地 `git reset HEAD~1`,因为这是默认行为):这个命令也会撤回最后一次提交,但更改会被保留在工作目录中。这意味着更改不再标记为将要提交的,它们回到了工作目录,就像你从未运行过 `git add` 一样。

简单来说:

  • `--soft`:撤销提交,但更改保留在暂存区,你可以重新提交。

  • `--mixed`(默认):撤销提交,更改保留在工作目录,需要重新 `git add` 到暂存区。

  • `--hard`:撤销提交,所有更改都会丢失。(注意一般不用这个!!!)

如果你想要撤回到执行 `git add .` 命令之后,但还没有执行 `git commit` 的状态,你可以使用 `git reset --mixed HEAD~1`。这样,你将撤销最后一次提交,并且所有更改会出现在工作目录中,你需要重新 `git add` 这些更改,然后再次提交。

相关推荐
周小码5 小时前
10分钟搭建私有Git服务器:Soft Serve实战
运维·服务器·git
梅塔文·欧帕西安卡琼14 小时前
git的底层原理详解
git
待什么青丝14 小时前
【git的摸鱼技巧】之工欲善其事
git·elasticsearch·搜索引擎
2601_9611940215 小时前
高中英语教资资料推荐|科三大题背诵和教学设计模板
git·开源·github·开源软件·开源协议·ossinsight
ting945200015 小时前
InsForge Backend Branching 后端全链路 Git 式分支技术原理、架构实现与底层源码剖析
人工智能·git·elasticsearch·架构
程序猿阿伟15 小时前
《扣子如何让OpenClaw技能开发提速》
人工智能·git·github
摇滚侠17 小时前
IDEA 创建 Java 项目 推送到远程 Git 仓库
java·git·intellij-idea
稷下元歌17 小时前
7天学会plc加机器视觉关于运动控制部份,配套视频在bib
开发语言·c++·git·vscode·python·docker·pip
tealcwu18 小时前
【Git 实战】三类方案实现一键推送多端仓库(Gitee & GitHub)
git·gitee·github
摇滚侠18 小时前
git ignore 忽略 .idea 目录 全新项目(尚未提交过 .idea).idea 已经被 Git 跟踪(已提交过)
java·git·intellij-idea