当我们在拉动时已经指定了远程时,为什么要设置远程跟踪分支(又名上游)?

Why set a remote tracking branch (aka upstream) when we are already specifying the remote while pulling?

根据其他答案和文档,我明白设置一个 远程跟踪分支 告诉 git 从哪里拉和推到哪里。但是我不是告诉git我每次执行git pull吗?

例如 git pull origin master 我告诉 git 从名为 origin 的远程和该远程上的分支 master 中拉取。在这种情况下拥有远程跟踪分支有什么用?

我知道它确定哪个远程分支 git status 报告我当前的本地分支是领先还是落后。

我的目标是创建一个设置,从原始分支中拉出并推送到我帐户上的分叉。到目前为止,我能想到的就是设置 2 个遥控器。一个到原始存储库(上游),一个到我的分支(源)。因此,我可以 git pull upstream master 获取最新代码,并 git push origin master 推送我的修改。

设置远程跟踪分支似乎没有任何实际用途。

它作为默认值。在大多数情况下,对于大多数人来说,他们通常从一个远程仓库中拉取和推送,很少或从不从另一个远程仓库中拉取和推送。

例如,我有一个我父亲 GitHub 存储库的分支,DomingoMontoya/sword-designs.git 在我的帐户上:InigoMontoya/sword-designs.git。在我的笔记本电脑上,我克隆了后者,git clone 非常方便地自动命名为 origin 并设置为我本地克隆的远程跟踪分支。这意味着在我工作时,我可以非常方便地使用两个词 git push 将提交推送到我的 GitHub 存储库。我不必记住键入 git push origin,也不必记住我是否将默认遥控器命名为 origingithubupstream

有时我在寻找六指人的旅途中有一个设计想法,我将它从我 phone 上的克隆推送到我的 GitHub 存储库。当我回到家时,我只输入 'git pull'。此外,我的朋友 Fezzik 有时会通过 Pull Request 向 贡献想法,一旦合并,我也会 git pull 他们到我的本地克隆。

偶尔我 git fetch upstream 从我父亲的回购中获取最新的信息,但遗憾的是什么都没有,因为他已经死了。无论如何,我这样做是为了纪念他。或者我有一些不合逻辑的希望他真的没有死。

来自git help remote

Note that the push URL and the fetch URL, even though they can be set differently, must still refer to the same place. What you pushed to the push URL should be what you would see if you immediately fetched from the fetch URL. If you are trying to fetch from one place (e.g. your upstream) and push to another (e.g. your publishing repository), use two separate remotes.