汤姆和爱丽丝都要在project
的分支上进行协作,该分支托管在Github上。以下是到目前为止发生的事情:
project
。new-feature
。new-feature
。project
。git remote add toms-fork git@githum.com:Tom/project.git
。git fetch toms-fork
。 Alice:git checkout toms-fork/new-feature
注意:查看&toms-fork / new-feature'。
你处于分离头部'州。你可以环顾四周,做实验 更改并提交它们,您可以放弃您在此中提交的任何提交 通过执行另一次结账而不影响任何分支的状态。
如果您想创建一个新分支以保留您创建的提交,您可以 通过再次使用-b和checkout命令来执行此操作(现在或稍后)。例如:
git checkout -b
所以,这让Alice(我)感到困惑。我是否需要创建自己的分支并向Tom提交PR以合并到我的分支toms-fork/new-feature
,然后将其合并到project
?
另外,为什么Alice(我)处于detached HEAD
状态?为什么我不在toms-fork/new-feature
?
答案 0 :(得分:2)
您检出了名为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
。如果你想要自己的分支,你也可以直接从project
分支在master
分支中创建一个分支,例如。
git checkout master
git checkout -b alice-branch
然后,汤姆和你的分支最终会合并回project
。
答案 1 :(得分:1)
结帐到toms-fork/new-feature
时,您处于分离的HEAD状态是由分支toms-fork/new-feature
引起的,不是您的本地分支。
如果你和Tom合作toms-fork/new-feature
分支,你和Tom可以在同一个github仓库上使用,例如git@githum.com:Tom/project.git
(如果你们两个都可以)。
出于私人原因,您无法获得Tom's github repo的许可。因此,您需要创建本地分支并向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