我做了一些提交,比如提交A,B,C 现在我想只将A和B提交到远程仓库。 (并保持提交C合并并在以后推送) 在我推动之前,我需要运行:
git fetch origin master
git rebase --merge FETCH_HEAD
问题是上面的命令会让我解决提交C的冲突,我现在不打算推送。
是否可以在不必处理提交C的情况下进行rebase。
由于
答案 0 :(得分:5)
保存提交以便推迟处理冲突的最简单方法是标记它,以便稍后引用提交:
$ git tag save-commitC <sha1>
保存引用后,不使用commit进行rebase:
$ git rebase --interactive --merge FETCH_HEAD
它应该打开你的编辑器文件,如下所示:
pick <sha1> <message>
pick <sha1> <message>
pick <sha1> <message>
...
要从此分支的历史记录中删除提交C,只需删除或注释掉提交的pick <sha1> <message>
行。
请注意,提交以相反的顺序列出,最早的提交第一个,最近的提交最后。列表上的第一个提交应该是第一个不是FETCH_HEAD
的祖先的提交。
一旦你没有C进行重新定位,请继续推进:
$ git push origin master
当您准备将其应用于重新分支的分支时:
$ git cherry-pick save-commitC
# resolve merge conflicts
$ git commit
$ git tag -d save-commitC
答案 1 :(得分:1)
您可以重置为提交b,然后存储您的更改,推送,然后重新应用您的存储。
git reset HEAD~1
git stash
(rebasing or whatever other intermediate steps required go here)
git push
git stash pop