为什么Git不默认为"origin master"?

nop*_*ole 36 git

我多次尝试做过

git pull
Run Code Online (Sandbox Code Playgroud)

它说没有指定分支.那么答案就是如何让git始终从特定的分支中拉出来? 似乎工作.

但我想知道,为什么Git默认不master分支?如果没有指定任何内容,那么表示master分支是否有意义?Git是否试图辜负它的名字 - "一个混蛋"=一个不愉快的人,所以当你问什么时候它,它总是告诉你,"因为你没有说你是否想知道当地时间或格林威治标准时间,中止."

Mar*_*air 81

git尝试git pull根据您当前所在的分支使用合理的默认值.如果你让你从参考错误git pull,而你的master,这意味着你没有配置为上游分支master.在许多情况下,这将是已经配置-例如,当你从一个仓库克隆,git clone将设置origin遥控器指向存储库,并建立masterorigin/master上游,所以git pull只会工作™.

但是,如果您想手动执行该配置,可以使用以下命令:

 git branch --set-upstream master origin/master
Run Code Online (Sandbox Code Playgroud)

...虽然从git 1.8.0开始你应该使用--set-upstream-to,因为之前的使用不会因为容易混淆而容易被弃用.因此,对于git 1.8.0及更高版本,你应该这样做:

 git branch --set-upstream-to origin/master
Run Code Online (Sandbox Code Playgroud)

或者您也可以在推送时设置适当的配置:

 git push -u origin master
Run Code Online (Sandbox Code Playgroud)

......并且git pull会做你想做的事.

  • 从我20年的编程经验来看,git更难用到C或C++,Java甚至是机器代码! (7认同)
  • @动静能量:这真让我对你所做的编码的复杂性感到疑惑......当然:有时选项和功能都被很好地隐藏了,但是没有什么是带有`git config --help`的vim .git/config不解决 (4认同)
  • @动静能量:是的,我并不怀疑你的经历; 这或多或少是我告诉你的方式,没有必要让这里的任何人相信学习的热情.我们在这里帮助你学习它,抱怨学生坦率地说不那么有趣:).(_如果你和我的同事交谈,你会知道我一天中说的'WTF'数量很好地衡量了那天我学到了多少.我只是不把它包括在SO_上 - - 干杯 (3认同)
  • @sehe是的,我知道有人会说这样的话...如果你说,"那个旅行社真的很糟糕!在我20年的旅行中,我从来没有见过一个真正花钱买的经纪人",必然会有人说,"你还没有看到任何东西",或"这让我想知道你20年来做了多少旅行" (2认同)

zah*_*anm 7

如上所述,git clone适当地设置所有默认值.我发现推动-u选择是最简单的设置现有的回购.

git push -u origin master

您可以检查使用远程配置的内容

git remote -v

有关git help remote详细信息,请参阅.