GitHub上origin
和upstream
之间的区别是什么?
完成git branch -a
命令后,某些分支的前缀为origin
(remotes/origin/..
),而其他分支的前缀为upstream
(remotes/upstream/..
)
答案 0 :(得分:634)
这应该在 GitHub forks 的背景下理解(在本地克隆该fork之前,你在GitHub上派一个GitHub仓库)。
upstream
通常是指您分叉的原始回购
(有关upstream
term)downstream
” and “upstream
””
origin
是你的分支:你自己在GitHub上的回购,克隆了GitHub的原始回购从GitHub页面:
当克隆一个repo时,它有一个名为
的远程origin
的默认远程指向GitHub上的fork,而不是它所分叉的原始repo。 要跟踪原始仓库,您需要添加另一个名为upstream
git remote add upstream git://github.com/user/repo.git
您将使用upstream
从原始仓库中提取(以使您的本地副本与您要贡献的项目保持同步)。
git fetch upstream
(默认情况下,git fetch
仅从origin
获取,这不是此处所需的内容。
您将origin
用于拉动和推送,因为您可以为自己的回购做贡献。
git pull
git push
(同样,没有参数,默认使用'origin')
您将通过 pull request 回馈upstream
回购。
答案 1 :(得分:1)
克隆fork之后,您必须显式添加一个远程上游,使用git add remote“您从中分叉的原始存储库”。这成为您的上游,您通常从上游获取并合并。其他任何事务,例如从本地向上游推送,都应使用拉取请求完成。
答案 2 :(得分:0)
简而言之