GitHub中的"fork"和"push upstream"是什么意思?

8
我目前正在与我的大学教授一起使用GitHub进行项目。由于我对GitHub不是很熟悉,所以我无法理解他发送给我的说明。
我希望有人能为我解释这些内容并帮助我理解它们。
引用: 学生应该使用GIT Hub并使用Project7分支。 Fork自己的存储库并将新开发的分支推送到主Project存储库。
我知道一些关于GitHub及其存储库的信息,并且现在正在阅读有关分支的信息。但我仍然不知道如何使用命令实现上述说明。
3个回答

6
指示的第一部分非常清晰。您需要做以下事情:
  • Log in to GitHub, go to the professor's repository and click "Fork".
  • Find the SSH URL for your fork of the repository, and clone it locally with something like:

    git clone git@github.com:whoever/whatever.git
    
  • If you run git branch -r you should see that you've now got the remote-tracking branch origin/Project7
  • You need to work on that branch, so you need to create a local branch based on origin/Project7. You can do that with:

    git checkout -b Project7 origin/Project7
    
  • Now you should do your development and create commits as usual to advance your Project7 branch.

现在这一部分对我来说还有些不清楚:

[...] 把新开发的分支推送到主项目存储库

这可能意味着:

(a) 你应该将分支推回 GitHub 上你自己的派生存储库。你可以使用以下命令完成:git push origin Project7

另一方面,它可能意味着(b) 你的教授已将你添加为他的 GitHub 存储库的合作者,并希望你推送到他存储库中的一个新分支。在这种情况下,你可以执行以下操作:

git remote add professor git@github.com:professor/whatever.git 
git push professor Project7:WarDoGG-Project7

这将把你的分支 Project7 推到教授存储库中名为 WarDoGG-Project7 的新分支。或者他可能希望您推回原始的 Project7 来推进他的分支,这种情况下,您可以省略命令中的 :<destination-branch> 部分。

我认为情况 (a) 更有可能,但您应该进行检查。


我想这里的意思是需要发送一个拉取请求。 - Paŭlo Ebermann

2

根据说明,我了解到:

1) 登录后,您应前往主项目GitHub页面并单击右上角的“Fork”按钮。 这样您就已经将主项目分叉到您的GitHub帐户中。

2) 克隆您的分叉项目到计算机中:

3) 在本地git存储库中:> git checkout -b Project7 origin/Project7

4) 开始编写代码...

5) 将更改推送到您的GitHub存储库。

6) 在GitHub上对主存储库发起拉取请求。


git checkout Project7 不会起作用 - 提问者需要基于 origin/Project7 创建该分支。 - Mark Longair

1
他告诉你要下载存储库,然后切换到Project7分支,并分叉出自己的分支。按照以下说明应该能够克隆一个分叉的repo(与普通克隆完全相同,只是你必须先在github上进行分叉):

http://help.github.com/fork-a-repo/

然后,在你克隆它之后,切换到Project7分支

git checkout -b newlocalbranchname origin/branch-name

然后,请确保你将更改推回你的分支:

git push origin branch-name


以下是关于你的回答的一些(希望有用的)评论:(a)既然你知道分支的名称,你可以在你给出的git checkout -b [..]示例中使用它。(b)可能没有理由使本地分支名称不同。(c)你在最后一个示例中使用了之前未提到的branchname分支,这可能会让人感到困惑。 - Mark Longair

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接