如何将新更改添加到中间的提交中,我的意思是不添加到顶部提交.
git log
commit1 <--- HEAD
commit2
commit3
Run Code Online (Sandbox Code Playgroud)
如何直接将更改添加到commit3,而不删除commit1和commit2,然后将更改添加到commit3.
我需要使用藏匿处吗?
如果可能,请提供链接.
sir*_*ide 13
你必须做一个互动的rebase.有关详细信息,请阅读git rebase的帮助页面.简短的回答是,您将继续像往常一样提交"中间"更改,然后运行git rebase -i HEAD~4
.它将在文本编辑器中显示最后3个提交的列表.只需重新排序最新提交放在中间的提交,然后保存并退出编辑器.然后Git将尝试以新顺序重建历史记录.它可能因冲突而停止.如果是这样,请像修改合并冲突一样修复它们,然后git rebase --continue
在它们全部修复并添加之后运行.当你遇到冲突时它会告诉你所有这些,所以只需阅读错误信息就可以了.
编辑:实际上,看起来你想要编辑现有的提交.在这种情况下,当编辑器出现时,将新的临时提交移动到commit3旁边,然后将命令从"pick"更改为"squash":
pick 123456 commit3
squash 541343 tmpcommit
pick 654321 commit2
pick 431523 commit1
Run Code Online (Sandbox Code Playgroud)
EDIT2:如果分支和commit1,commit2和commit3已经公开,那么你不应该重新定位.再说一遍,你不应该修改提交,所以整个问题都没有实际意义.我假设这是一个私人分支,或者其他人希望重新定位和重绕的分支.
你可以用git-rebase做到这一点:
git rebase -i commit3^
Run Code Online (Sandbox Code Playgroud)
在弹出的文件中,更改pick commit3
为edit commit3
.保存并退出,然后进行更改.像往常一样提交它们,然后使用git rebase --continue
.完成后,您将看到commit3和commit2之间的新变化.
(这将与Sjoerd的答案相同;它只是一种不同的思考方式.如果你的更改与commit2冲突,你将不得不处理这两种方式.)
归档时间: |
|
查看次数: |
7627 次 |
最近记录: |