git在分支上合作
汤姆和艾丽斯将在Github上托管的project
分支上合作。以下是目前为止发生的事情:git在分支上合作
- 汤姆叉
project
。 - 汤姆在他的叉子中使分支
new-feature
。 - Tom提交更改为
new-feature
。 - Alice forks
project
。 - Alice:
git remote add toms-fork [email protected]:Tom/project.git
。 - 爱丽丝:
git fetch toms-fork
。 -
爱丽丝:
git checkout toms-fork/new-feature
注:检查出 '汤姆斯叉/新功能'。
你处于'分离状态'状态。你可以四处看看,做实验 更改并提交它们,你可以放弃你在这个 状态下的任何提交,而不会影响任何分支通过执行另一个结账。
如果您想要创建一个新的分支来保留您创建的提交,您可以使用-b和checkout命令(现在或以后)再次执行此操作(现在或以后)。例如:
git的结帐-b
所以,这混淆爱丽丝(我)。我是否需要建立自己的分支并向汤姆提交PR以合并到我的分支toms-fork/new-feature
,然后合并为project
?
此外,为什么爱丽丝(我)在detached HEAD
状态?为什么我不在toms-fork/new-feature
?
您签出名为toms-fork/new-feature
的远程跟踪分支。这让你处于独立HEAD状态,这不是你想要的。相反,你可能是为了做到这一点:
git checkout toms-fork/new-feature
git checkout -b alice-branch # create a new branch from new-feature
然后,做这个分支上的所有工作,而当它涉及到你的工作合并到new-feature
,可以发出你的alice-branch
拉请求。这假定你想和你的合作者Tom分享new-feature
。如果你想要自己的分支,你也可以直接从master
分支中创建一个分支,例如project
。
git checkout master
git checkout -b alice-branch
然后,汤姆和你的分支最终将合并回project
。
“,您可以在您的爱丽丝分支上发出拉取请求。”你如何做这部分?它是否是一个公关汤姆叉/新功能..? –
_你告诉_me_这个问题的答案。如果你想让你的工作进入“新功能”,那么发布一个PR作为目的地。如果你想让它回到'master',那么发布一个PR。 –
创建拉请求是一个两步过程。首先,通过'git push origin alice-branch'将你的分支推送到GitHub。然后,从GitHub站点内部创建一个请求并选择你想要的目的地。而已。 –
当您结帐到toms-fork/new-feature
是由分支toms-fork/new-feature
不是您的本地分支时,您处于分离HEAD状态。
如果你和Tom合作为toms-fork/new-feature
分支,你和Tom可以在同一个github仓库上使用,比如[email protected]:Tom/project.git
(如果你们俩都可以)。
由于私人原因,您不能获得Tom的github回购的许可。所以你需要创建你的本地分支并向Tom提交一个PR。然后汤姆提交PR到项目(或者你们两个都可以提交PR到project
)。
如果你的本地修改需要根据toms-fork/new-feature
,您可以使用下面的步骤:
# on master branch
git checkout -b mybranch
git rebase toms-fork/new-feature
make/commit/push your changes to toms-fork and submit a PR
为什么要重组而不是合并? –
通常rebase与合并相反。比如在'b1'分支上,使用'git rebase b2',它会重放从'b1'到'b2'顶部的变化。但是如果'b2'不是本地分支,rebase是不同的。 –
你有没有得到帮助你来解决这个问题的答案吗?如果是,请标记它。它会帮助其他有类似问题的人。 –