GitHub上的origin和upstream有什么区别?

jan*_*jan 354 git github git-branch

是什么区别origin,并upstreamGitHub上

git branch -a命令完成后,一些分支有一个前缀origin(remotes/origin/..),而另一些的前缀upstream(remotes/upstream/..).

Von*_*onC 709

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

  • upstream通常是指您已经分叉的原始仓库
    (有关期限的更多信息,请参阅" 定义downstream"和" upstream" " upstream)
  • origin 是你的分支:你自己在GitHub上的回购,克隆了GitHub的原始回购

从GitHub页面:

当一个repo被克隆时,它有一个默认的远程调用origin,指向你的GitHub上的fork,而不是它分叉的原始repo.
要跟踪原始仓库,您需要添加另一个名为的远程仓库upstream

git remote add upstream git://github.com/<aUser>/<aRepo.git>
Run Code Online (Sandbox Code Playgroud)

您将使用aUser/aRepo从原来的回购取(为了保持你的本地副本同步与您想参与该项目).

git fetch upstream
Run Code Online (Sandbox Code Playgroud)

(默认情况下upstream会单独取出git fetch,这不是这里需要的)

您将使用origin推拉因为你可以贡献自己的回购协议.

git pull
git push
Run Code Online (Sandbox Code Playgroud)

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

您将origin通过提出拉取请求回馈回购.

叉和上游

  • 到目前为止,我所看到的叉子工作原理的最佳解释.你得到了我的支持. (16认同)
  • 它还有助于了解"上游"通常是什么:http://stackoverflow.com/questions/2739376/definition-of-downstream-and-upstream/2749166#2749166 (10认同)
  • 视觉上的伟大工作.非常直接和可理解的答案.这正是我想要的. (9认同)
  • @iamrudra 如果 git remote -v 显示原始和上游的相同 url,那么是的,您正在推送到相同的远程存储库。 (3认同)
  • @MaxRydahlAndersen是的,但我喜欢使用没有包装的Git,所以我现在将保留该约定(上游与原点). (2认同)

TUS*_*asi 24

简而言之回答。

  • 起源:叉子
  • 上游:分叉


Jus*_*33K 5

GitHub上的origin和upstream有什么区别?

在 GitHub 的上下文中,“起源”和“上游”指的是两个不同的存储库。

“Origin”通常指您自己的存储库分支。当您在 GitHub 上创建存储库时,您会在自己的帐户中创建它的副本。该副本称为分叉,原始存储库称为上游存储库。当您将分叉克隆到本地计算机时,Git 会自动设置一个名为“origin”的远程,该远程分叉指向 GitHub 上的分叉。

“上游”是指您派生的原始存储库。这是您在创建分支时最初复制的存储库。您可以设置一个名为“upstream”的远程来指向此存储库,这允许您使您的分支保持最新状态,以了解对上游存储库所做的任何更改。

“origin”是指您自己的存储库分支,而“upstream”是指您派生的原始存储库。

假设您想为 GitHub 上另一个用户拥有的名为“example-project”的开源项目做出贡献。要为该项目做出贡献,您通常会将存储库分叉到您自己的帐户,将其克隆到本地计算机,进行更改,然后向原始存储库提交拉取请求。

以下是“源”和“上游”存储库的发挥作用:

  1. 分叉存储库:转到 GitHub 上的“example-project”存储库,然后单击“分叉”按钮。这将在您自己的帐户中创建存储库的副本,现在称为“您的用户名/示例项目”。

  2. 克隆存储库:您可以使用 git clone 命令将存储库的分支克隆到本地计算机。这将在您的计算机上设置存储库的本地副本。

  3. 设置“origin”远程:当您克隆 fork 时,Git 会自动设置一个名为“origin”的远程,该远程指向 GitHub 上的 fork。这允许您使用 git push 命令将更改推送到您的 fork。

  4. 设置“上游”远程:为了让您的分支及时了解对原始存储库所做的任何更改,您可以设置一个名为“上游”的远程,该远程指向原始存储库。您可以使用 git Remote add 命令来执行此操作。例如:

    git remote add upstream https://github.com/original-user/example-project.git

这将设置一个名为“upstream”的远程,它指向原始存储库。

  1. 从“上游”获取更改:要获取对原始存储库所做的任何更改,您可以使用“上游”远程运行 git fetch 命令。例如:

    git fetch upstream

这将获取对原始存储库所做的任何更改。

  1. 将更改合并到您的分支中:从原始存储库获取更改后,您可以使用 git merge 命令将它们合并到您的分支中。例如:

    git merge upstream/main

这将对原始存储库的“主”分支所做的任何更改合并到存储库的本地副本中。

  1. 将更改推送到“origin”:对存储库的本地副本进行更改后,您可以使用该git push命令将它们推送到 GitHub 上的分支。例如:

    git push origin main

这会将您对分支的“主”分支所做的任何更改推送到 GitHub 上的分支。

  1. 提交拉取请求:将更改推送到分支后,您可以向原始存储库提交拉取请求。这允许原始存储库的所有者查看您的更改并将其合并到他们的存储库中。

总之,“起源”是指您自己的存储库分支,而“上游”是指您派生的原始存储库。通过将“上游”设置为远程,您可以使您的分支及时了解对原始存储库所做的任何更改。