说我正在向LLVM添加新目标,我想在GitHub上保留我的更改,直到我准备将它们提交到上游。 LLVM维护其SVN存储库的Git镜像,并建议在与git pull --rebase
同步时使用upstream/master
。到目前为止,该计划是我的存储库master
分支将跟踪upstream/master
,然后mytarget
分支将进行更改。
Git Book说明了这一点:
不要对存储库外存在的提交进行重新定位。
因此,如果我想git pull
从upstream/master
进入master
而git push
回到origin
,我就不应该} 然后使用--rebase
?或者我应该使用git pull --rebase
从upstream/master
进行同步,然后从master
合并到mytarget
吗?
在这种情况下,我的整体工作流程应该是什么?
答案 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