jan*_*jan 354 git github git-branch
是什么区别origin
,并upstream
在GitHub上?
当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
通过提出拉取请求回馈回购.
在 GitHub 的上下文中,“起源”和“上游”指的是两个不同的存储库。
“Origin”通常指您自己的存储库分支。当您在 GitHub 上创建存储库时,您会在自己的帐户中创建它的副本。该副本称为分叉,原始存储库称为上游存储库。当您将分叉克隆到本地计算机时,Git 会自动设置一个名为“origin”的远程,该远程分叉指向 GitHub 上的分叉。
“上游”是指您派生的原始存储库。这是您在创建分支时最初复制的存储库。您可以设置一个名为“upstream”的远程来指向此存储库,这允许您使您的分支保持最新状态,以了解对上游存储库所做的任何更改。
“origin”是指您自己的存储库分支,而“upstream”是指您派生的原始存储库。
假设您想为 GitHub 上另一个用户拥有的名为“example-project”的开源项目做出贡献。要为该项目做出贡献,您通常会将存储库分叉到您自己的帐户,将其克隆到本地计算机,进行更改,然后向原始存储库提交拉取请求。
以下是“源”和“上游”存储库的发挥作用:
分叉存储库:转到 GitHub 上的“example-project”存储库,然后单击“分叉”按钮。这将在您自己的帐户中创建存储库的副本,现在称为“您的用户名/示例项目”。
克隆存储库:您可以使用 git clone 命令将存储库的分支克隆到本地计算机。这将在您的计算机上设置存储库的本地副本。
设置“origin”远程:当您克隆 fork 时,Git 会自动设置一个名为“origin”的远程,该远程指向 GitHub 上的 fork。这允许您使用 git push 命令将更改推送到您的 fork。
设置“上游”远程:为了让您的分支及时了解对原始存储库所做的任何更改,您可以设置一个名为“上游”的远程,该远程指向原始存储库。您可以使用 git Remote add 命令来执行此操作。例如:
git remote add upstream https://github.com/original-user/example-project.git
这将设置一个名为“upstream”的远程,它指向原始存储库。
从“上游”获取更改:要获取对原始存储库所做的任何更改,您可以使用“上游”远程运行 git fetch 命令。例如:
git fetch upstream
这将获取对原始存储库所做的任何更改。
将更改合并到您的分支中:从原始存储库获取更改后,您可以使用 git merge 命令将它们合并到您的分支中。例如:
git merge upstream/main
这将对原始存储库的“主”分支所做的任何更改合并到存储库的本地副本中。
将更改推送到“origin”:对存储库的本地副本进行更改后,您可以使用该git push
命令将它们推送到 GitHub 上的分支。例如:
git push origin main
这会将您对分支的“主”分支所做的任何更改推送到 GitHub 上的分支。
总之,“起源”是指您自己的存储库分支,而“上游”是指您派生的原始存储库。通过将“上游”设置为远程,您可以使您的分支及时了解对原始存储库所做的任何更改。