2015-04-02 97 views
2

當我使用本地分支mybranch時,我希望能夠使用只使用git pushgit pull。事實上,我必須單調地寫出git push origin mybranchgit pull origin mybranch。如果我嘗試使用剛剛git pull例如,我得到:使用git自動跟蹤遠程分支

There is no tracking information for the current branch. 
Please specify which branch you want to merge with. 
See git-pull(1) for details 

    git pull <remote> <branch> 

If you wish to set tracking information for this branch you can do so with: 

    git branch --set-upstream-to=origin/<branch> mybranch 

如果我進入git branch --set-upstream-to=origin/mybranch mybranch,那麼它的工作原理。但是這與以前的命令幾乎一樣乏味。我可以讓git做爲默認行爲嗎?我見過類似的問題,答案往往表明新版本的git可以做到這一點,但我使用git 2.1.3版本,這是相當新的,所以它不能僅僅是這樣。

+2

下一次你推,使用'git push -u origin mybranch'。從那時起,當你在'mybranch'上,'git push'和'git pull'就足夠了。 – Jubobs 2015-04-02 20:55:32

回答

5

這不是github,它是你的本地git,完成所有這些。

如果您正在使用git checkout它已經在你的本地庫中存在的origin/mybranch創建mybranch地方,你可以簡單地git checkout mybranch和當地git會看到origin/mybranch存在與origin/mybranch作爲其上游創建本地mybranch

在另一方面,如果origin/mybranch尚不存在,你正在與git checkout -b或類似的創建mybranch地方,你不能真正將其設置爲跟蹤不存在上游分支,但(你可以配置它追蹤該分支,但偶爾會有上游版本不存在的投訴)。

在這種特殊情況下,對第一推(一個將上游創建分支),你可以使用:

git push -u origin mybranch 

告訴你當地的git推mybranchorigin ,一旦完成,請將origin/mybranch設置爲mybranch的跟蹤分支。

請注意,這與運行git branch --set-upstream-to的操作相同:您只需一次,之後它在本地設置,您不必再次操作。這只是更方便,因爲您可以與push一起創建分支origin。但是你仍然必須記得這麼做(一次;當你運行git push而沒有-u origin mybranch時你會被提醒)。

+0

啊,我以爲我已經避免特別提到github,但我錯了。將解決。謝謝(你的)信息!我想我會創建一個bash別名來創建分支。 – 2015-04-02 23:01:17

2

一個可能的解決方案是將你的git推送行爲修改爲current(注意這也會產生一些其他副作用)。你可以做,要麼通過直接修改您的~/.gitconfig(爲一個文件,這是假定你是在Linux上)或通過執行:

git config --global push.default current 

現在,當你push,git會自動把你的當前分支到遠程分支即使您沒有明確指定,也可以使用同名。另外,如果您當前的分支沒有遠程等價物,則會創建一個遠程分支,並且您當前的分支將被設置爲跟蹤它(與git push -u origin new_branch相同,但帶有單個git push)。另請參閱this question,其中詳細描述了git推送行爲。

+0

而'git config --global pull.default current'用於自動提取與原始名稱相同的分支。 – 2017-08-18 19:34:53

+0

@AlexanderRodin不工作,仍然要求用git'2.15.0'設置上游 – 2017-11-17 16:00:13