我对Git相当陌生,但仍然可以掌握。我最近刚开始与分支机构合作,并且遇到了一些问题。
我有两个开发系统,一个Ubuntu桌面和一个MacBookPro。我在Ubuntu系统上的新organizations
分支中做了很多工作,并进行了提交并将其推送到我的远程仓库中。此时,我有以下分支:
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
所以我的问题是:
origin/HEAD -> origin/master
,而Ubuntu系统没有?那是什么分支git pull
是否会自动拉出所有新的远程分支?我以为我必须告诉它要拉的新分支的名称。如您所见,它拉了comomand organizations
上的远程git pull
分支。 最佳答案
HEAD
通常指向当前 checkout 的分支。在托管(裸)存储库中,它指定默认分支,即克隆存储库时 checkout 的分支。因此,origin / HEAD会告诉您默认的起源分支。
我不知道为什么它在Ubuntu系统上的存储库中不存在。也许您最初是从该存储库中推送代码的(当源为空,因此还没有HEAD时),并且从不对其进行更新。
无论如何,拥有诸如origin / HEAD之类的东西在实践中并不十分重要。如果需要,可以使用git remote set-head origin -a
创建/更新origin/HEAD
回答另一个问题:如果不带参数运行git pull
,它实际上会从远程获取所有内容(git fetch
也可以不带参数运行,因此它只获取所有内容)。但是,一切都不会合并。仅更新远程跟踪分支(git branch -r
中的内容)。