git 在分支上协作
git collaborate on branch
Tom 和 Alice 都将在 project
的一个分支上进行协作,该分支托管在 Github 上。这是到目前为止发生的事情:
- Tom forks
project
.
- Tom 在他的叉子中创建分支
new-feature
。
- Tom 提交了对
new-feature
的更改。
- 爱丽丝分叉
project
。
- 爱丽丝:
git remote add toms-fork git@githum.com:Tom/project.git
.
- 爱丽丝:
git fetch toms-fork
.
爱丽丝:git checkout toms-fork/new-feature
注意:签出 'toms-fork/new-feature'。
您处于 'detached HEAD' 状态。你可以环顾四周,做实验
更改并提交它们,你可以放弃你在此所做的任何提交
通过执行另一次结帐而不影响任何分支的状态。
如果你想创建一个新分支来保留你创建的提交,你可以
通过再次将 -b 与 checkout 命令一起使用来执行此操作(现在或以后)。示例:
git checkout -b
所以,这让爱丽丝(我)感到困惑。我是否需要创建自己的分支并向 Tom 提交 PR 以将我的分支合并到 toms-fork/new-feature
,然后再合并到 project
?
另外,Alice(我)为什么会处于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
然后,Tom 的和你的分支最终都会合并回 project
。
当您结帐到 toms-fork/new-feature
时,您处于分离的 HEAD 状态是由于分支 toms-fork/new-feature
不是您的本地分支。
如果您和 Tom 合作 toms-fork/new-feature
分支,您和 Tom 可以使用同一个 github 存储库,例如 git@githum.com:Tom/project.git
(如果双方都同意) .
出于私人原因,您无法获得 Tom 的 github 存储库的许可。因此,您需要创建本地分支并向 Tom 提交 PR。然后 Tom 向项目提交 PR(或者你们都可以向 project
提交 PR)。
如果您的本地更改需要基于 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
Tom 和 Alice 都将在 project
的一个分支上进行协作,该分支托管在 Github 上。这是到目前为止发生的事情:
- Tom forks
project
. - Tom 在他的叉子中创建分支
new-feature
。 - Tom 提交了对
new-feature
的更改。 - 爱丽丝分叉
project
。 - 爱丽丝:
git remote add toms-fork git@githum.com:Tom/project.git
. - 爱丽丝:
git fetch toms-fork
. 爱丽丝:
git checkout toms-fork/new-feature
注意:签出 'toms-fork/new-feature'。
您处于 'detached HEAD' 状态。你可以环顾四周,做实验 更改并提交它们,你可以放弃你在此所做的任何提交 通过执行另一次结帐而不影响任何分支的状态。
如果你想创建一个新分支来保留你创建的提交,你可以 通过再次将 -b 与 checkout 命令一起使用来执行此操作(现在或以后)。示例:
git checkout -b
所以,这让爱丽丝(我)感到困惑。我是否需要创建自己的分支并向 Tom 提交 PR 以将我的分支合并到 toms-fork/new-feature
,然后再合并到 project
?
另外,Alice(我)为什么会处于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
然后,Tom 的和你的分支最终都会合并回 project
。
当您结帐到 toms-fork/new-feature
时,您处于分离的 HEAD 状态是由于分支 toms-fork/new-feature
不是您的本地分支。
如果您和 Tom 合作 toms-fork/new-feature
分支,您和 Tom 可以使用同一个 github 存储库,例如 git@githum.com:Tom/project.git
(如果双方都同意) .
出于私人原因,您无法获得 Tom 的 github 存储库的许可。因此,您需要创建本地分支并向 Tom 提交 PR。然后 Tom 向项目提交 PR(或者你们都可以向 project
提交 PR)。
如果您的本地更改需要基于 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