如何管理git-svn存储库的fork?

时间:2017-07-19 16:58:50

标签: git version-control

说我正在向LLVM添加新目标,我想在GitHub上保留我的更改,直到我准备将它们提交到上游。 LLVM维护其SVN存储库的Git镜像,并建议在与git pull --rebase同步时使用upstream/master。到目前为止,该计划是我的存储库master分支将跟踪upstream/master,然后mytarget分支将进行更改。

Git Book说明了这一点:

  

不要对存储库外存在的提交进行重新定位。

因此,如果我想git pullupstream/master进入mastergit push回到origin,我就不应该然后使用--rebase?或者我应该使用git pull --rebaseupstream/master进行同步,然后从master合并到mytarget吗?

在这种情况下,我的整体工作流程应该是什么?

1 个答案:

答案 0 :(得分:0)

git pull --rebase重新定义那些尚未被推送的提交,因此它应该是安全的。让我们看看......

A  B  c  D
*--*--*--* <master
      |
  origin/master

您有一个未推送的提交D。如果远程主服务器上有两个新的提交,并且您运行git pull --rebase origin/master git,那么两个提交和rebase会在它们之上提交D

A  B  c  X  Y  D`
*--*--*--*--*--* <master
            |
      origin/master

新提交是D'(提交从未真正编辑或移动 - git创建新提交而移动分支指针)。现在你做git push origin master推送新的提交,我们看到了:

A  B  c  X  Y  D`
*--*--*--*--*--* <master
               |
         origin/master