git撤销提交,保留之前的代码

本文详细介绍了Git的回退操作,包括使用`git reset --hard`命令清空工作区到特定版本,以及`git reset HEAD^`如何撤销最近一次commit而不删除已添加的代码。了解这些命令对于日常开发中的版本控制至关重要。

回退到某一版本,不过这之后的内容将会被清空
git reset --hard 139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96
不清空请看下面
传送门:https://blog.youkuaiyun.com/itanping/article/details/103921993

git reset HEAD^
不删除工作空间提交的代码,撤销 commit,并且撤销 git add . 操作。

Git 中撤回之前提交的 commit 代码有多种方式,具体取决于不同的需求,以下是常见的几种情况及对应命令: 1. **撤回 commit 但保留修改保留工作目录文件)**:适用于需要修改 commit 内容后重新提交,使用命令 `git reset --soft HEAD^`。该命令可以撤销最后一次 commit,代码改动会保留在暂存区(`git status` 显示已 `add` 状态)。若要撤回最近 2 次 commit 保留修改,则使用 `git reset --soft HEAD~2` [^1]。 ```bash git reset --soft HEAD^ ``` 2. **撤回 commit 放弃修改(彻底删除改动)**:适用于放弃最后一次 commit 的所有修改(需谨慎使用),命令为 `git reset --hard HEAD^`。此操作会撤销 commit,代码改动将完全消失,属于不可逆操作 [^1]。 ```bash git reset --hard HEAD^ ``` 3. **撤回 commit 但保留修改在工作目录**:适用于重新选择部分文件提交,可使用 `git reset HEAD^` 或 `git reset --mixed HEAD^`(默认选项)。执行后,撤销 commit,代码改动保留在工作目录(`git status` 显示未 `add` 状态) [^1]。 ```bash git reset HEAD^ ``` 4. **撤回某个特定的 commit,但保留后续提交**:使用 `git revert <commit-id>`,会生成一个新的 commit 来抵消指定 commit 的改动,适用于已推送的 commit,能保留历史记录。例如要撤销某个特定的 commit,可执行以下命令: ```bash git revert a1b2c3d ``` 5. **已推送到远程仓库的撤回** - **强制推送**:如果 commit 已推送到远程分支(如 `origin/main`),需要先在本地撤回,再强制推送覆盖远程。本地撤回使用 `git reset --hard HEAD^`,然后使用 `git push --force origin 分支名` 强制覆盖远程。但要注意,强制推送会覆盖远程历史,需确保团队其他成员知晓 [^1]。 ```bash git reset --hard HEAD^ git push --force origin main ``` - **创建反向 commit**:推荐用于公共分支,使用 `git revert HEAD` 生成一个新 commit 来撤销一次 commit 的改动,不修改历史,安全适用于已推送的 commit [^1]。 ```bash git revert HEAD ``` 总结不同场景的选择如下: |需求|命令| | ---- | ---- | |修改 commit 内容重新提交|`git reset --soft HEAD^`| |完全放弃最后一次 commit|`git reset --hard HEAD^`| |保留改动重新选择文件提交|`git reset HEAD^`| |安全撤销已推送的 commit|`git revert HEAD`| 注意:所有 `HEAD^` 可替换为具体 commit hash(如 `a1b2c3d`)以撤销更早提交 [^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值