是否可以将提交中的更改移到树上的其他更改之前,以便我可以测试这些提交。
在这个例子中,我想将'Romoved sess_match_useragent'移动到树中的'Updated core to 2.1.0'之前
由于
答案 0 :(得分:7)
是的,git rebase -i refspec
。
此处,refspec
将是“更新核心”提交之前的提交的标识符(SHA1或相对refspec)。这将打开一个包含提交及其顺序的编辑器:在“更新的核心”之前移动提交的pick
行并退出编辑器:git将重写分支。
请注意,您可能必须解决冲突。
阅读编辑器中的帮助以及提交列表:它包含许多有用的提示,您可以做很多事情。例如,如果您犯了拼写错误,只需reword
提交消息......
在你的情况下,如你所指出的,refspec
可以HEAD~17
,即“17在提交HEAD之前提交”(HEAD始终是你当前所在分支的尖端)。
答案 1 :(得分:0)
您可以创建一个单独的分支,然后cherry-pick
您要测试的更改。
git checkout -b feature/foo [sha of "Updated core to 2.1.0"]
git cherry-pick [sha of "Removed sess_match_useragent"]
这不会影响现有的历史记录。但是,通常您为要开发/修复的每个功能/ bug创建一个单独的分支,并相互测试separat,然后您只使用此分支,直到您对它感到满意为止。然后将其合并回develop
或master