问题简述
在某个分支开发Feature过程中,可能在N次前的某个提交中需要修改用户名,而该分支已经Push到远端。
此时可以在本地分支通过git rebase -i
的方式来指定修改某条Commit,修改完后,通过push --force
强行同步给远端进行修改。
修改方案
-
使用
git rebase -i Head~2git rebase -i HEAD~n
进行修改,此时终端会展示出来从n次前修改到现在的Commit记录。
-
将对应commit前的标识从
image.pngpick
改为edit
,代表在rebase的过程中该次Commit需要修改。
-
在修改完后通过
wq
保存起来,然后开始对每个标记edit
的commit进行提交 -
通过
git commit --amend -author "xx"
修改该次提交 -
修改完后,通过
git rebase --continue
完成rebase操作,在本地完成修改 -
通过
git push --force-with-lease origin remote
将本地的提交完全同步到远端
注意事项
- 由于该操作会将该N次提交通过产生新提交的方式进行修改,所以最好是force push,否则会产生Merge的操作。
- 在rebase前,本地与远端分支最好先pull,保证该分支代码与远端分支,否则在强制push到远端后会有部分提交被覆盖
网友评论