我想fork一个GitHub项目以解决一些问题,然后发送一个pull请求。
我遇到的问题是,我已经为另一个用户群体适应了该项目进行了fork。
是否可以创建第二个fork?如果可以,怎么做?
现在尝试fork时,它只会将我带到先前创建的fork。
我想fork一个GitHub项目以解决一些问题,然后发送一个pull请求。
我遇到的问题是,我已经为另一个用户群体适应了该项目进行了fork。
是否可以创建第二个fork?如果可以,怎么做?
现在尝试fork时,它只会将我带到先前创建的fork。
除非您使用两个不同的GitHub帐户,否则无法拥有同一GitHub项目的两个分支。
因此:
创建一个单独的GitHub帐户(并验证电子邮件)
分叉项目
邀请您的主GitHub帐户作为“合作者”(从设置中)
您可能需要添加额外的步骤,即使用新的GitHub帐户创建组织,并将您的主GitHub帐户邀请为该组织的所有者(还要确保您的新分支位于该新组织中)。这将使您能够执行诸如自动部署到连接到您的主GitHub帐户的Heroku应用程序等操作。
为什么我们不能只有多个fork???
project-fork
并推送到其中。请参见https://dev59.com/_Wct5IYBdhLWcg3wHZ1q以获取更详细的答案。 - Chrismaster
分支创建拉取请求。这样,您就不需要创建多个分叉,因为您可以根据需要创建任意多的分支,并针对每个分支独立地发起拉取请求。创建分支:<new-branch-name>
可点击链接。棘手的UI部分是可能不太明显您应该单击"create branch: xyz..." - 它未显示为按钮或超链接,并且没有指示这是可点击的链接。此外,直到您在搜索框中键入内容之前,也没有任何暗示可以创建分支 - 任何人都可能认为搜索框仅用于搜索分支而不是用于创建分支。
如果您已经直接在分叉的master
分支中进行了更改,请考虑将这些更改移动到专用分支并且硬重置master
分支以使其保持干净,以便与上游存储库同步。你可以通过使用多个远程的概念轻松实现你的目的。
在你的代码库中执行以下命令序列:
git remote add upstream https://github.com/user_or_org_of_upstream_repo/upstream_repo
git fetch upstream
git checkout upstream/main
git checkout -b name_of_branch_you_want_to_track_in_your_repo
进行修改、添加和提交,然后使用以下命令将更改推送回您的 GitHub 分支:
git push --set-upstream origin name_of_branch_you_want_to_track_in_your_repo
该分支与您的存储库中的其他分支完全断开连接(除了任何源树父级关系,一直到最近的共同祖先为止),现在可以在GitHub上用于拉取请求。
大功告成!
git remote add upstream https://github.com/user_or_org_of_upstream_repo/upstream_repo
添加另一个远程存储库并将其标记为upstream
。标签可以是任何东西--upstream
更或多或少是您分叉的父级的公认标准名称,但它也可以是“bob”、“mary”、“dirt”或任何其他名称。此外,远程可以是任何存储库,尽管我只尝试过从至少是相同上游远程的平行分叉中获取。
git fetch upstream
实际上获取新存储库的主要和其他分支,并将它们克隆到本地。它们现在只是坐在那里,等待您对它们进行操作。
git checkout upstream/main
检出您在远程列表中标记为“upstream”的存储库的主分支。当然,您也可以检出存储库中的任何其他分支。
git checkout -b name_of_branch_you_want_to_track_in_your_repo
创建一个本地分支,可以跟踪您的更改。
git push --set-upstream origin name_of_branch_you_want_to_track_in_your_repo
将您的新分支推回默认远程仓库origin
。同样,您可以将该分支推送到任何其他具有写入权限的远程仓库。
当您fork并克隆您的存储库时,默认远程存储库是您的fork,并且标签为“origin”。git remote
命令显示了这一点--例如,这是我制作的一个有趣的小存储库(未能)掌握在线游戏“Wordle”的输出。
> git remote -v
origin https://github.com/jameshalgren/wordle_analyst_ideas (fetch)
origin https://github.com/jameshalgren/wordle_analyst_ideas (push)
fatal: The current branch test_new_branch has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin test_new_branch
git remote
中,您还可以看到origin
标签。如果您在上面的示例中派生了存储库,并为您的上游和可能的几个其他协作者添加了远程存储库,则git remote
命令将开始像这样:> git remote -v
origin https://github.com/youruser/wordle_analyst_ideas (fetch)
origin https://github.com/youruser/wordle_analyst_ideas (push)
upstream https://github.com/jameshalgren/wordle_analyst_ideas (fetch)
upstream https://github.com/jameshalgren/wordle_analyst_ideas (push)
collaborator https://github.com/collaboratoruser/wordle_analyst_ideas (fetch)
collaborator https://github.com/collaboratoruser/wordle_analyst_ideas (push)