什么是 git upstream

5 浏览
0 Comments

什么是 git upstream

当你创建了一个github仓库并将该仓库添加为远程仓库git remote add origin https://github.com/githubname/reponame.git后,你需要使用git push -u origin master来推送你的第一个提交。

我在(为什么我需要一直使用`--set-upstream`?)中读到了这是一个简化版的命令,等同于以下操作:

git branch --set-upstream-to my_branch origin/my_branch
git push

那么什么是upstream,为什么我需要设置它?网络上对此的信息很少。我知道有一个类似的主题(git remote add upstream有什么作用?),但我认为它没有准确解释upstream是什么以及git push -u origin master的作用,特别是origin master指向的是本地仓库还是远程仓库?

0
0 Comments

什么是git的upstream?

在git中,upstream代表你从中克隆分支(一部分)的仓库,也是你向这些分支推送更改(以及可选的全新分支)的地方。GitHub作为upstream,因为他们在集中的位置上为你存储了修订版本。

然而,这种说法不完全准确。Upstream是分支之间的关系,而不是仓库之间的关系。

确切地说,"upstream"是指与--set-upstream相关的概念,它根本不涉及仓库级别上的关系。不同的本地分支可以将它们的upstream设置为不同的远程分支,甚至可以设置为本地分支。比如,可以设置跟踪你本地master的功能分支。因此,说"GitHub作为你的upstream"只是误导性的,因为它混淆了开发工作流程中这个术语的意义,以及OP所询问的Git术语中的意义。

解决方法:明确upstream的定义,避免误导性的说法。

原因:混淆了upstream在Git中的意义,给用户带来了困惑。

0
0 Comments

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

origin是您要推送到的远程仓库。

master是refspec参数。refspec参数指定了将哪个本地分支推送到哪个远程分支。它可能很复杂,但在这种情况下,简写形式master表示将本地的master分支推送到同名的远程分支origin/master

从技术上讲,跟踪操作会向您的.git/config文件中添加关于master分支的以下信息:

[branch "master"]

remote = origin

merge = refs/heads/master

并且它在这里创建一个文件.git/refs/remotes/origin/master,表示远程分支。

请您解释一下命令$git push -u origin master中的origin master指向的是什么,并且我将选择您的答案作为解决方法。

对于分支引用规范(branch-refspec),并不难理解:mastermaster:master的简写,其中第一个"master"定义了本地分支,第二个"master"定义了远程分支 🙂

0