GitHub上的原点和上游有什么区别?

当执行一个git分支-a命令时,它显示的一些分支有一个origin前缀(remotes/origin/..),而另一些分支有一个upstream前缀(remotes/upstream/..)。


当前回答

克隆一个fork后,你必须显式地添加一个远程上游,用git添加远程“你fork的原始repo”。这就是上游,你主要从上游获取和合并。任何其他业务,如从本地推送到上游,都应该使用拉请求来完成。

其他回答

上游

上游通常指的是你已经分叉的原始回购。为了跟踪原始的回购,您需要添加另一个名为upstream的远程。

当我们运行这个命令时:

git push -u origin master

-u标志意味着您的本地分支将成为跟踪分支。也就是说,一个分支跟踪一个远程分支(上游分支),所以未来的git pull将知道从哪个分支合并,git push将被定向到正确的远程分支。

起源

当您使用git clone命令克隆存储库时,它会自动创建一个名为origin的远程连接,指向克隆的存储库。Origin是你在GitHub上自己的回购的分叉,复制了GitHub的原始回购。

运行此命令:

git push origin branchname

简单地回答。

产地:叉子 上游:分叉

克隆一个fork后,你必须显式地添加一个远程上游,用git添加远程“你fork的原始repo”。这就是上游,你主要从上游获取和合并。任何其他业务,如从本地推送到上游,都应该使用拉请求来完成。

这应该在GitHub fork的上下文中理解(在本地克隆该fork之前,您在GitHub上fork一个GitHub repo)。

上游通常指的是你已经分叉的原始回购 (有关上游术语,请参阅“下游”和“上游”的定义) origin是你的fork:你自己在GitHub上的回购,复制了GitHub的原始回购

从GitHub页面:

当一个回购被克隆时,它有一个默认的远程名为origin,指向你在GitHub上的分叉,而不是它被分叉的原始回购。 为了跟踪原始的回购,您需要添加另一个名为upstream的远程

git remote add upstream https://github.com/<aUser>/<aRepo.git>

(使用aUser/aRepo作为原始创建者和存储库的引用,你已经fork了)

注意:自2021年9月起,GitHub不再支持9418端口上未经身份验证的git协议(git://…)

您将使用upstream从原始的repo中获取(为了保持您的本地副本与您想要贡献的项目同步)。

git fetch upstream

(默认情况下,git单独获取将从origin获取,这不是这里所需要的)

您将使用origin进行拉和推操作,因为您可以对自己的存储库进行贡献。

git pull
git push

(同样,没有参数,默认使用'origin')

您将通过发出拉取请求来回馈上游回购。