撤销git commit 的两种方式

本文介绍了如何使用Git撤销最近的提交以及如何管理和创建新分支的详细步骤。提供了两种撤销commit的方法,并指导如何在撤销后新建分支进行代码提交。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方式一

有时候,在本地commit之后,发现这次并不是我们想要的,需要会到commit之前,以下就是步骤:

  1. 查询提交日志

 

#显示所有的提交日志,最上面的就是最近一次的一次本地的commit
git log

 

image.png

2.找到想要返回的那次commit,复制code值,

 

#commit-id 就是你想要返回到的具体的code值
get  reset  --hard commit-id

方式二        (方式二为转载  未测试,这里只是做个记录。)

本人总是干这种挫事情:一顿操作猛如虎,各种git add,各种git commit,最后一看,我擦,还特么在master上,太吓人了,这咋办?——撤销commit:

$ git commit -m "commit on master"
$ git reset HEAD~     
1
2
这样撤销了上面的commit。
后续该回滚回滚,该新建分支新建分支。

最后切记,时刻查看当前branch是个好习惯。

当然我们撤销master上的commit无非就是想切到自己的branch上提交代码,那好,现在master上面不是有一个commit么,那么就在当前master上新建一个branch出来,注意一定要从master上切,也就是当前branch一定是master:

$ git branch
* master
$ git branch -b my-branch
$ git push origin my-branch
1
2
3
4
这时候就能按照自己的branch提交代码了。
事情完了吗,没完,因为master上的那个提交还没revert,怎么搞,很简单,就是最上面那个reset命令,外加checkout:

$ git checkout master
$ git reset HEAD~     
$ git checkout .
1
2
3
这样你的master branch就干净啦……
————————————————
版权声明:本文为优快云博主「K.Sun」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/sinat_36246371/article/details/79995661

 

<think>好的,用户想了解如何撤回本地的git add和git commit操作。我需要先回忆相关的Git命令,然后根据提供的引用资料来组织答案。 首先,git add的撤销。根据引用[1]和引用[4],git add的作用是将文件添加到暂存区,撤销的话应该用git reset。可能有两种情况:全部撤销撤销特定文件。用户可能需要具体命令,比如git reset HEAD或者git restore --staged <file>。 接下来是撤销git commit。根据引用[4]里的示例,git reset --soft HEAD^可以撤销提交但保留更改在暂存区。还有--mixed和--hard选项的区别需要解释清楚。用户可能想知道不同选项的应用场景,比如是否需要保留修改或彻底丢弃。 还要注意区分不同的引用点。例如,引用[4]提到使用HEAD^或提交哈希,所以需要说明这两种方法的用法。另外,引用[2]中提到git commit -a可能会影响撤销方式,但用户的问题里没有提到-a参数,可能暂时不需要涉及。 另外,用户可能容易混淆reset的不同参数,需要明确--soft、--mixed、--hard的区别,并给出典型的使用例子。比如,如果只是想重新编辑提交信息,用--soft;如果想取消暂存,用--mixed;如果彻底删除更改,用--hard,但需谨慎。 最后,生成的相关问题需要围绕用户可能遇到的后续疑问,比如更复杂的撤销情况或远程仓库的操作。根据引用[3],git push相关,但用户现在问的是本地操作,所以相关问题可以包括如何撤销远程提交,或者更早的提交撤销方法。 需要确保回答结构清晰,分点列出git add和git commit撤销步骤,并给出对应的命令示例。同时,提醒用户谨慎使用--hard选项,避免数据丢失。可能还需要提到reflog来找回丢失的提交,但根据现有引用资料,是否包含呢?引用中没有提到,但作为补充可能会有帮助,不过根据规则只能使用提供的引用,所以暂时不加入。 检查是否有遗漏的情况,比如多个add或commit后的撤销,是否需要逐步回退。比如多次commit后如何回退到某个节点,可以用git reset --hard <commit-id>,这在引用[4]的示例中有提到。所以需要说明使用提交哈希的方法。 总结步骤: 1. 撤销git add:git reset HEAD或git restore --staged。 2. 撤销git commit:使用git reset --soft HEAD^,并解释不同参数。 3. 注意事项,比如--hard的风险。 4. 相关问题可以涉及更深入的操作或远程撤销。</think>### 撤回本地Git添加与提交操作的方法 #### 1. 撤销 `git add` 操作 - **全部撤销暂存区文件** 使用命令将暂存区所有文件移回工作区: ```bash git reset HEAD ``` 或 ```bash git restore --staged . ``` - **撤销特定文件的暂存状态** 指定文件名将单个文件移出暂存区: ```bash git reset HEAD <文件名> ``` 或 ```bash git restore --staged <文件名> ``` #### 2. 撤销 `git commit` 操作 - **保留修改内容,仅撤销提交记录** 使用 `--soft` 参数保留暂存区和工作区内容,仅回退提交历史: ```bash git reset --soft HEAD^ ``` 若要回退到更早的提交,可指定提交哈希: ```bash git reset --soft <commit-id> ``` - **撤销提交并取消暂存修改** 使用 `--mixed`(默认参数)将提交撤销,并将修改保留在工作区(不保留暂存状态): ```bash git reset HEAD^ ``` - **彻底丢弃提交和修改(谨慎使用)** 使用 `--hard` 参数会删除提交记录,并丢弃所有修改: ```bash git reset --hard HEAD^ ``` #### 注意事项 - `HEAD^` 表示前一次提交,`HEAD~n` 表示回退 `n` 次提交。 - `--hard` 会永久丢失未提交的修改,需确保已备份必要代码[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值