origin和upstream在GitHub上有什么区别?执行git branch -a命令时,它显示的某些分支前缀为origin(remotes/origin/..),而其他分支前缀为upstream(remotes/upstream/..)。
origin
upstream
git branch -a
remotes/origin/..
remotes/upstream/..
idfiyjo81#
这应该在**GitHub forks**的上下文中理解(在这里,您在本地克隆分叉之前在GitHub上分叉GitHub repo)。
(see关于upstream术语的更多信息,请参见“Definition of “ downstream ” and “ upstream ””)
downstream
从GitHub页面:当一个repo被克隆时,它有一个名为origin的默认远程,它指向你在GitHub上的fork,而不是它被fork的原始repo。要跟踪原始存储库,需要添加另一个名为upstream的远程存储库
git remote add upstream https://github.com/<aUser>/<aRepo.git>
(with aUser/aRepo原始创建者和存储库的引用,您已经分叉)注意:since Sept. 2021,端口9418上的未经身份验证的git协议(git://...)不再被GitHub支持。您将使用upstream从原始repo中获取(以便使您的本地副本与您想要贡献的项目保持同步)。
aUser/aRepo
git://...
git fetch upstream
(默认情况下,单独的git fetch将从origin获取,这不是这里所需要的)您将使用origin来pull和push,因为您可以为自己的存储库做出贡献。
git fetch
git pull git push
(同样,如果没有参数,默认使用'origin')您将通过创建**pull request**返回upstream存储库。
vvppvyoh2#
简单地说。
zyfwsgd63#
在克隆一个fork之后,你必须显式地添加一个远程上游,使用git add remote“你从其fork的原始repo”。这就变成了你的上游,你主要是从你的上游获取和合并。任何其他业务,例如从本地推送到上游,都应该使用pull request。
dtcbnfnu4#
在GitHub的上下文中,“origin”和“upstream”指的是两个不同的存储库。“Origin”通常是指您自己的仓库分支。当你在GitHub上分叉一个仓库时,你会在自己的账户中创建一个副本。这个副本被称为fork,原始存储库被称为上游存储库。当你将你的fork克隆到本地机器上时,Git会自动设置一个名为“origin”的远程,指向你在GitHub上的fork。“上游”指的是您从中派生的原始存储库。这是您创建fork时最初复制的存储库。您可以设置一个名为“upstream”的远程仓库,它指向这个仓库,这样您就可以让您的fork保持与上游仓库的任何更改同步。“origin”指的是你自己的仓库分支,而“upstream”指的是你从那里分支出来的原始仓库。假设你想为GitHub上一个名为“example-project”的开源项目做贡献,这个项目由另一个用户拥有。要为这个项目做出贡献,您通常会将存储库分叉到自己的帐户,将其克隆到本地计算机,进行更改,然后向原始存储库提交拉取请求。下面是“源”和“上游”存储库如何发挥作用:1.**Fork the repository:**您可以在GitHub上找到“example-project”repository,然后单击“Fork”按钮。这将在您自己的帐户中创建存储库的副本,现在称为“your-username/example-project”。1.**克隆仓库:**使用git clone命令将仓库的fork克隆到本地机器。这将在您的计算机上设置存储库的本地副本。1.**设置“origin”remote:**当你克隆你的fork时,Git会自动设置一个名为“origin”的remote,指向你在GitHub上的fork。这允许您使用git push命令将更改推送到fork。1.**设置“upstream”remote:**为了让您的fork能够及时更新对原始仓库所做的任何更改,您可以设置一个名为“upstream”的remote,它指向原始仓库。你可以使用git remote add命令。例如:git remote add upstream https://github.com/original-user/example-project.git这将设置一个名为“上游”的远程,它指向原始存储库。1.**从“upstream”获取更改:**要获取原始仓库的任何更改,您可以使用“upstream”remote运行git fetch命令。例如:git fetch upstream这将获取对原始存储库所做的任何更改。1.**将更改合并到您的fork中:**从原始仓库获取更改后,您可以使用git merge命令将它们合并到您的fork中。例如:git merge upstream/main这会将对原始存储库的“main”分支所做的任何更改合并到存储库的本地副本中。1.**将更改推送到“origin”:**一旦您对存储库的本地副本进行了更改,您可以使用git push命令将其推送到GitHub上的fork。例如:git push origin main这会将您对分叉的“主”分支所做的任何更改推送到GitHub上的分叉。1.**提交pull request:**将更改推送到fork后,您可以向原始仓库提交pull request。这允许原始存储库的所有者查看您的更改并将其合并到他们的存储库中。总而言之,“origin”指的是您自己的仓库分支,而“upstream”指的是您从中分支的原始仓库。通过将“upstream”设置为远程,您可以使您的fork与对原始存储库所做的任何更改保持同步。
git remote add upstream https://github.com/original-user/example-project.git
git merge upstream/main
git push
git push origin main
4条答案
按热度按时间idfiyjo81#
这应该在**GitHub forks**的上下文中理解(在这里,您在本地克隆分叉之前在GitHub上分叉GitHub repo)。
upstream
通常是指您已经分叉的原始repo(see关于
upstream
术语的更多信息,请参见“Definition of “downstream
” and “upstream
””)origin
是你的fork:你自己的GitHub上的仓库,GitHub原始仓库的克隆从GitHub页面:
当一个repo被克隆时,它有一个名为
origin
的默认远程,它指向你在GitHub上的fork,而不是它被fork的原始repo。要跟踪原始存储库,需要添加另一个名为
upstream
的远程存储库(with
aUser/aRepo
原始创建者和存储库的引用,您已经分叉)注意:since Sept. 2021,端口9418上的未经身份验证的git协议(
git://...
)不再被GitHub支持。您将使用
upstream
从原始repo中获取(以便使您的本地副本与您想要贡献的项目保持同步)。(默认情况下,单独的
git fetch
将从origin
获取,这不是这里所需要的)您将使用
origin
来pull和push,因为您可以为自己的存储库做出贡献。(同样,如果没有参数,默认使用'origin')
您将通过创建**pull request**返回
upstream
存储库。vvppvyoh2#
简单地说。
zyfwsgd63#
在克隆一个fork之后,你必须显式地添加一个远程上游,使用git add remote“你从其fork的原始repo”。这就变成了你的上游,你主要是从你的上游获取和合并。任何其他业务,例如从本地推送到上游,都应该使用pull request。
dtcbnfnu4#
GitHub上的origin和upstream有什么区别?
在GitHub的上下文中,“origin”和“upstream”指的是两个不同的存储库。
“Origin”通常是指您自己的仓库分支。当你在GitHub上分叉一个仓库时,你会在自己的账户中创建一个副本。这个副本被称为fork,原始存储库被称为上游存储库。当你将你的fork克隆到本地机器上时,Git会自动设置一个名为“origin”的远程,指向你在GitHub上的fork。
“上游”指的是您从中派生的原始存储库。这是您创建fork时最初复制的存储库。您可以设置一个名为“upstream”的远程仓库,它指向这个仓库,这样您就可以让您的fork保持与上游仓库的任何更改同步。
“origin”指的是你自己的仓库分支,而“upstream”指的是你从那里分支出来的原始仓库。
假设你想为GitHub上一个名为“example-project”的开源项目做贡献,这个项目由另一个用户拥有。要为这个项目做出贡献,您通常会将存储库分叉到自己的帐户,将其克隆到本地计算机,进行更改,然后向原始存储库提交拉取请求。
下面是“源”和“上游”存储库如何发挥作用:
1.**Fork the repository:**您可以在GitHub上找到“example-project”repository,然后单击“Fork”按钮。这将在您自己的帐户中创建存储库的副本,现在称为“your-username/example-project”。
1.**克隆仓库:**使用git clone命令将仓库的fork克隆到本地机器。这将在您的计算机上设置存储库的本地副本。
1.**设置“origin”remote:**当你克隆你的fork时,Git会自动设置一个名为“origin”的remote,指向你在GitHub上的fork。这允许您使用git push命令将更改推送到fork。
1.**设置“upstream”remote:**为了让您的fork能够及时更新对原始仓库所做的任何更改,您可以设置一个名为“upstream”的remote,它指向原始仓库。你可以使用git remote add命令。例如:
git remote add upstream https://github.com/original-user/example-project.git
这将设置一个名为“上游”的远程,它指向原始存储库。
1.**从“upstream”获取更改:**要获取原始仓库的任何更改,您可以使用“upstream”remote运行git fetch命令。例如:
git fetch upstream
这将获取对原始存储库所做的任何更改。
1.**将更改合并到您的fork中:**从原始仓库获取更改后,您可以使用git merge命令将它们合并到您的fork中。例如:
git merge upstream/main
这会将对原始存储库的“main”分支所做的任何更改合并到存储库的本地副本中。
1.**将更改推送到“origin”:**一旦您对存储库的本地副本进行了更改,您可以使用
git push
命令将其推送到GitHub上的fork。例如:git push origin main
这会将您对分叉的“主”分支所做的任何更改推送到GitHub上的分叉。
1.**提交pull request:**将更改推送到fork后,您可以向原始仓库提交pull request。这允许原始存储库的所有者查看您的更改并将其合并到他们的存储库中。
总而言之,“origin”指的是您自己的仓库分支,而“upstream”指的是您从中分支的原始仓库。通过将“upstream”设置为远程,您可以使您的fork与对原始存储库所做的任何更改保持同步。