我做了一些提交,说提交A,B,C现在我想只将提交A和B推送到远程仓库.(并保持提交C合并并在以后推送)在我推动之前,我需要运行:
git fetch origin master
git rebase --merge FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)
问题是上面的命令会问我解决提交C的冲突,我现在不打算推.
是否有可能在不必处理提交C的情况下进行rebase.
谢谢
保存提交以便推迟处理冲突的最简单方法是标记它,以便稍后引用提交:
$ git tag save-commitC <sha1>
Run Code Online (Sandbox Code Playgroud)
保存引用后,没有提交的rebase:
$ git rebase --interactive --merge FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)
它应该打开你的编辑器文件看起来像这样:
pick <sha1> <message>
pick <sha1> <message>
pick <sha1> <message>
...
Run Code Online (Sandbox Code Playgroud)
要从此分支的历史记录中删除提交C,只需删除或注释掉提交的pick <sha1> <message>行.
请注意,提交以相反的顺序列出,最旧的提交优先,最新的提交最后.列表上的第一个提交应该是第一个不是祖先的提交FETCH_HEAD.
一旦你没有C进行重新定位,请继续推进:
$ git push origin master
Run Code Online (Sandbox Code Playgroud)
当您准备在重新分支的分支上应用它时:
$ git cherry-pick save-commitC
# resolve merge conflicts
$ git commit
$ git tag -d save-commitC
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3499 次 |
| 最近记录: |