代码之家  ›  专栏  ›  技术社区  ›  haydenmuhl

使用git svn,如果我有多个提交,而不是在svn中,如何只将所选提交推送到svn?

  •  1
  • haydenmuhl  · 技术社区  · 14 年前

    假设我在本地Git存储库中有多个提交没有被推送到SVN。例如,这四个提交在master上。

    A <-- B <-- C <-- D
    

    A是最早的提交,而不是在SVN中,D是最新的提交。

    如何使用 git svn dcommit 只将A和B推送到SVN,但只将C和D保留在本地Git存储库中?

    欢迎使用其他工作流。

    2 回复  |  直到 14 年前
        1
  •  3
  •   Michael Mrozek    14 年前

    dcommit 接受一个可选参数,指定在提交期间作为头处理的内容,因此这两个参数中的任何一个都可以工作(其中 B 是对该特定提交的引用,如果它有一个提交,则通过名称或哈希引用):

    git svn dcommit B
    git svn dcommit HEAD~2
    
        2
  •  1
  •   Community CDub    8 年前

    我一直在考虑这个问题,并且有一个解决我自己问题的潜在方案。

    我可以为我正在处理的每个离散任务创建一个本地分支。如果我完成了一项工作,正在等待代码检查,我可以创建一个新的分支,并开始处理独立的任务。

    当一个给定的任务完成时,我运行 git svn rebase . 然后我在master上重新设置本地分支,将master快速转发到该分支的头上,然后进行数据传输。

    我的问题是提交A和B是一项任务的一部分,C和D是另一项独立的任务。C和D属于不同的分支,永远不应该被放在A和B之上。

    这个问题的答案…

    git-svn dcommiting a single git commit

    似乎表明只提交A和B是不可能的。