参考:csdn文章
背景
- 正在一个功能分支上开发,提交了一个commit A之后,又提交了很多个commit,现在想回头修改这个commit A
- 将 A 功能从 branchA 合入到主分支 master 后过了很多个提交后,发现 A 功能某个地方有 bug,最好的方法就是跳回到写 A 功能的时候进行修改。
步骤
其实可以修改之前commit的内容和日志,日志的话只需要使用git rebase
然后选择reword
即可,这里主要讲解如何修改这个commit的内容
暂存当前工作
我在开发某个东西,突然想到之前commit有bug,这个时候我的工作区肯定是有东西修改但没提交的,所以此时使用git stash
暂存起来
找到当前commit的hash
使用git log
,如下:
4fd65115db FUNCTION Mipi Camera Camera IC: OV13850 Interface: RX1
97a8ad0f7f FUNCTION 移植 8寸 Mipi LCD Driver IC: RM72014
9633cf0919 FUNCTION 移植 8寸 TP Driver IC:GT911
我现在发现当时移植 TP 的时候有 bug,我需要回到 9633cf0919 对进行 TP 进行移植的时候来修复这个 Bug。
使用git rebase
- 使用如下命令进入rebase交互界面:
其中9633cf0919^的git rebase 9633cf0919^ -i
^
表示9633cf0919这个commit的上一次提交 - 找到需要修改的commit:9633cf0919,将默认的
pick
改成edit - 然后就可以以平常的方式修改你的bug了
- 修改后使用
git add
将改动文件添加到暂存 - 使用
git commit -amend
追加改动到提交 git rebase --continue
移动当前指针HEAD回最新的commit- 然后使用
git stash pop
恢复之前的开发上下文