更改git 树中某个旧的commit

本文提供了使用Git Rebase命令进行代码修改的步骤说明,包括如何将提交标记从'pick'改为'edit',如何编辑代码并提交更改,以及如何解决过程中可能出现的问题。

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

Please see this page.
http://schacon.github.com/history.html

I tried this and summary the step as following.
1. git rebase -i HEAD~3
2. change the "pick" to "edit" for the commit you want.
3. change the code , and git add
4. git commit --amend, change the comment you want
5. git rebase --continue

BYW, during once, my git tree is corrupted.
It is better for you to make a copy of your git tree first.
### 如何在Git中回退到特定的提交记录并改该提交 当需要撤销某个具体的提交,而不是最新的提交时,`git revert` 是一种安全的方式。此命令不会改变项目的历史线性结构;相反,它创建一个新的提交来逆转指定提交所做的更改[^1]。 对于想要撤消中间某次提交的情况,可以通过 `git revert commit_id` 来实现这一操作。这里 `commit_id` 应替换为目标提交的实际哈希值。这将会创建一个新的提交,其内容是对选定提交引入变更的逆向应用,从而有效地取消了那次提交的效果而不影响之后的工作成果[^4]。 如果执行了 `Revert change by this commit` 导致所有提交被清除的现象,则可能是误用了其他命令或者是环境配置出现了问题。正常情况下,仅应看到新增了一个用于反转型更的新提交而非整个历史消失不见[^2]。 为了具体展示如何完成上述过程: 假设当前分支上有如下几个版本: ``` A---B---C---D (HEAD -> master) ``` 现在希望撤销 C 版本中的改动,那么应该这样做: ```bash # 查看日志找到目标提交ID $ git log --oneline # 假设得到的目标提交ID为 abcdefg对应于上面提到的"C" # 使用revert指令针对这个提交做反转处理 $ git revert abcdefg # 如果有冲突解决它们后继续流程 # 完成后会自动生成一条新的提交消息描述此次翻转行为 ``` 这样就成功地通过新产生的提交抵消掉了原有提交带来的变化,而无需重写任何现有历史或丢失后续工作数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值