git 在分支上协作

git collaborate on branch

Tom 和 Alice 都将在 project 的一个分支上进行协作,该分支托管在 Github 上。这是到目前为止发生的事情:

  1. Tom forks project.
  2. Tom 在他的叉子中创建分支 new-feature
  3. Tom 提交了对 new-feature 的更改。
  4. 爱丽丝分叉 project
  5. 爱丽丝:git remote add toms-fork git@githum.com:Tom/project.git.
  6. 爱丽丝:git fetch toms-fork.
  7. 爱丽丝: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