git push撤销及本地代码消失恢复

本文介绍了如何使用Git撤销已推送到远程仓库的错误提交。包括查看版本历史、使用`git reset`命令进行软回退和硬回退的区别,以及如何通过强制推送覆盖远程分支上的提交记录。

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

当发生代码push到远程仓库后想要撤销

1.查看版本

git log

2.回退

git reset --soft 677fsv3386de5743

--soft提交的代码回退还在本地

--hard提交的代码回退后会消失

后面输入的版本号是你push错的前面一个版本号,相当于回到push前的样子

3.推送

git push origin 当前分支名 --force

这时候检查远程分支上push的记录就没有了,实现了撤回

 

 

如果本地代码不在了,也可以找回

git reflog

git reset --hard 8ecb4c3(head前面版本号,填你需要的)

 

### 如何取消已经提交但未推送的更改 在 Git 中,如果需要取消已经提交但尚未推送到远程仓库的更改,可以使用 `git reset` 命令。此命令允许用户将分支指针移动到指定的提交,并根据需要选择保留或丢弃工作目录中的更改。 #### 使用 `git reset` 撤销提交 `git reset` 提供了三种主要模式:`--soft`、`--mixed` 和 `--hard`。以下是每种模式的作用: - **`--soft`**:仅移动 HEAD 指针到指定提交,保留暂存区和工作目录的内容不变。这意味着之前的提交内容仍然存在于暂存区中[^2]。 - **`--mixed`**(默认):移动 HEAD 指针到指定提交,保留工作目录的内容,但清除暂存区。这使得用户可以重新选择要提交的内容[^2]。 - **`--hard`**:移动 HEAD 指针到指定提交,同时重置暂存区和工作目录,丢弃所有更改。这是一个危险操作,因为丢失的更改无法恢复[^2]。 以下是一个撤销最新提交的示例代码: ```bash # 撤销最新提交,保留工作目录的更改 git reset --soft HEAD~1 # 或者撤销最新提交并清除暂存区 git reset --mixed HEAD~1 # 或者撤销最新提交并丢弃所有更改 git reset --hard HEAD~1 ``` #### 强制推送更改 如果本地分支的历史记录被修改(例如通过 `git reset`),并且已经推送到远程仓库,则需要使用 `git push -f` 强制推送更改以更新远程分支[^2]。然而,由于问题明确指出提交尚未推送,因此无需执行此步骤。 #### 使用 `git revert` 撤销提交 另一种方法是使用 `git revert` 创建一个新的提交来撤消指定提交的更改。这种方法不会修改历史记录,而是通过添加新的提交来实现撤销效果[^1]。以下是示例代码: ```bash # 撤销指定提交 git revert <commit-hash> ``` ### 注意事项 - 如果仅需撤销最新的提交,推荐使用 `git reset --soft`,因为它保留了工作目录的更改,便于后续重新提交。 - 在使用 `git reset --hard` 时需格外小心,因为它会永久删除未提交的更改。 - 如果需要撤销非最新提交,`git revert` 是更安全的选择,因为它不会修改提交历史[^1]。 ```bash # 示例:撤销最新提交并保留更改 git reset --soft HEAD~1 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值