给定多个未推送git
承诺,是否有可能git-svn dcommit
只有其中一项提交?
例如我已经提交了 foo、bar 和 baz,但现在我只想让 bar 最终出现在 svn 存储库中。这可能吗?
(以下假设您的工作正在进行master
.)
首先,重新排序最后三个提交,以便bar
是第一。
git rebase -i HEAD~3
编辑器将弹出如下内容:
pick 498e4f4 foo
pick 71547ae bar
pick abf09c6 baz
# Rebase 4d3fe72..abf09c6 onto 4d3fe72
#
# ...
在弹出的编辑器中重新排序它们,以便bar
首先。
pick 71547ae bar
pick 498e4f4 foo
pick abf09c6 baz
# Rebase 4d3fe72..abf09c6 onto 4d3fe72
#
# ...
Git 将旋转几秒钟并发出确认信息:
Successfully rebased and updated refs/heads/master.
现在您可以暂时回滚到bar
犯罪 (HEAD~2
意味着两次提交HEAD
)并提交它:
git checkout HEAD~2
git svn dcommit
如果你像我一样偏执,你可以这样做git svn dcommit -n
首先要确保你只承诺你想要的。
现在跳回到master
:
git checkout master
最后一点是变基,以便master
与 svn 同步:
git svn rebase
我有点不清楚为什么需要这样做,但我猜测在分离的 HEAD 状态下进行 dcommitting 与此有关。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)