我对 Git 还很陌生,但仍在掌握它的窍门。我最近刚刚开始与分支机构合作,遇到了一些问题。
我有两个开发系统,一个 Ubuntu 桌面和一个 MacBookPro。我在新的环境中做了很多工作organizations
Ubuntu 系统上的分支并执行提交并推送到我的远程存储库。此时,我有这些分支:
tauren@ubuntu:/projects$ git branch
accounting
master
* organizations
tauren@ubuntu:/projects$ git branch -r
origin/accounting
origin/master
origin/organizations
origin/superstar
然后我切换到MBP来拉取新分支:
tauren@osx:/projects$ git branch
accounting
* master
tauren@osx:/projects$ git branch -r
origin/HEAD -> origin/master
origin/accounting
origin/master
origin/superstar
tauren@osx:/projects$ git pull
2e20a14..ef35730 accounting -> origin/accounting
271a1a5..7e947ab master -> origin/master
* [new branch] organizations -> origin/organizations
tauren@osx:/projects$ git branch
* accounting
master
tauren@osx:/projects$ git branch -r
origin/HEAD -> origin/master
origin/accounting
origin/master
origin/organizations
origin/superstar
所以我的问题是:
- 为什么MBP有分行
origin/HEAD -> origin/master
,但是Ubuntu系统没有?那个分支是什么?
- Does
git pull
自动拉取所有新的远程分支?我想我必须告诉它要拉取的新分支的名称。正如你所看到的,它拉动了遥控器organizations
命令上的分支git pull
.
HEAD
通常指向当前签出的分支。在托管(裸)存储库中,它指定默认分支,即克隆存储库时检出的分支。因此,origin/HEAD 告诉您origin 的默认分支。
我不知道为什么它不存在于 Ubuntu 系统上的存储库中。也许您最初从该存储库推送代码(当 origin 为空,因此还没有 HEAD 时)并且从未更新它。
无论如何,像 origin/HEAD 这样的东西在实践中并不是非常重要。如果你愿意,你可以使用git remote set-head origin -a
具有origin/HEAD
创建/更新
回答你的另一个问题:如果你跑步git pull
没有参数,它实际上从远程获取所有内容(git fetch
运行时也没有参数,所以它只获取所有内容)。但一切并没有被合并。只有远程跟踪分支(git branch -r
)已更新。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)