2012-04-13 119 views
126
失敗

我已經克隆一個Git倉庫,然後檢查了一個標籤:git的結帳標籤,混帳拉分支

# git checkout 2.4.33 -b my_branch 

這是確定的,但是當我嘗試運行我的分支git pull,混帳吐出來這個錯誤:

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 new origin/<branch> 

我想git pull只更新master分支並獨自離開我現在的分支(這是一個標籤反正)。是這樣的可能嗎?

我之所以需要這個是我總是git的拉庫,當然,因爲上述錯誤的失敗時自動腳本..

+0

可能重複[git pull:沒有當前分支的跟蹤信息](http://stackoverflow.com/questions/32056324/git-pull-there-is-no-跟蹤信息爲當前分支) – daisy 2016-07-21 14:52:20

回答

103

編輯:對於Git的更新版本,--set-upstream master已被棄用,你應該使用--set-upstream-to代替:

git branch --set-upstream-to=origin/master master 

因爲它提示,你可以運行:

git branch --set-upstream master origin/master 

之後,你可以簡單地運行git pull更新代碼。

+4

這解決了這個問題。但我仍然需要了解我的主分支如何失去對原點的指稱。我在一個分支上做了'git checkout master'。我不能做'拉屎',因爲對原點的引用丟失了。現在它可以工作。謝謝! – Ariel 2014-12-12 13:22:48

6

切換回主分支使用

$ git checkout master 

然後運行git pull操作

$ git pull origin/master 

之後,可以再次切換回你的my_branch

+6

這正是我想要避免的。我想知道是否有「官方」的方式來做到這一點。 – alesko 2012-04-13 21:35:07

0

爲了只下載更新:

git fetch origin master 

然而,這只是更新一個名爲origin/master參考。更新您當地的master的最好方法是在另一條評論中提到的結賬/合併。 如果你能保證你的本地master還沒有從主幹線是origin/master是分道揚鑣,你使用git update-ref映射當前的master到新的點,但是這可能不是最好的解決方案,使用上定期...

90

我有同樣的問題,用這個命令修復它:

$ git push -u origin master 

從幫助文件中的-u基本上設置了拉默認:

-u, --set-upstream` 

    For every branch that is up to date or successfully pushed, add 
    upstream (tracking) reference, used by argument-less git-pull(1) and 
    other commands. For more information, see branch.<name>.merge in 
    git-config(1). 
5

@alesko:這是不可能只做唯一git pull結賬my_branch後只更新master分支。
因爲git pull也將合併到當前分公司 - >在方案中的my_branch

@Simon:這也將做推動。這是爲什麼?

$ git branch -u origin/master 
Branch master set up to track remote branch master from origin. 

和acording到文檔:

-u <upstream> 
    Set up <branchname>'s tracking information so <upstream> is considered 
    <branchname>'s upstream branch. If no <branchname> is specified, 
    then it defaults to the current branch. 
47

嘗試鍵入以下命令:

git pull origin master 
git push -u origin master 
4

首先,確保你在正確的分支。
然後(僅一次):

git branch --track 

之後,這個作品再次:

git pull 
1

您需要設置跟蹤(上游)當前分支

git branch --set-upstream master origin/master 

已被棄用,而不是你可以使用--track flag

git branch --track master origin/master 

我也很喜歡文檔引用,@casey通知:

-u <upstream> 
    Set up <branchname>'s tracking information so <upstream> is considered 
    <branchname>'s upstream branch. If no <branchname> is specified, 
    then it defaults to the current branch. 
1

什麼工作對我來說是:只有 的Git分支--set上游到原點=主 當我再次做了一次拉我從主人那裏得到了更新,警告消失了。

4

您可能有多個分支。而你目前的分支沒有在遠程設置上游。

步驟來解決這個問題:

git checkout branch_name 
git branch --set-upstream-to=origin/remote_branch_name local_branch_name 

例如

// this set upstream of local branch develop to remote branch origin/develop, 
git branch --set-upstream-to=origin/develop develop 

這樣做後,當你做git pull,它從指定的分支拉。

2

試試這個

git checkout master 

git pull origin master 
+2

這不是真的回答這個問題。雖然沒有被接受的答案,但頂級投票者對這個老問題的答案要合適得多 – fejese 2014-11-14 13:15:33

0

此命令已過時:git branch --set-upstream master origin/master

因此,試圖建立跟蹤時,這是爲我工作的命令:

git branch --set-upstream-to=origin/master master 
1

如果像我需要一直這樣做,你可以設置一個別名,通過將以下內容添加到.gitconfig文件中來自動完成:

[alias] 
    set-upstream = !git branch --set-upstream-to=origin/`git symbolic-ref --short HEAD` 

當您看到消息There is no tracking information...,只需運行git set-upstream,然後再git push

由於https://zarino.co.uk/post/git-set-upstream/

1

你可以指定你想拉哪個分支:

git pull origin master 

或者你可以設定,讓您的本地master分支軌道的github主分支作爲上游:

git branch --set-upstream-to=origin/master master 
git pull 

此分支跟蹤是在克隆存儲庫時自動爲您設置的(僅適用於默認分支),但如果將遠程添加到現有的存儲庫,您必須自行設置跟蹤。值得慶幸的是,git給出的建議使得記住該怎麼做非常容易。

--set-upstream在git 1.9.x中已被棄用,顯然。 今後你想使用類似

git branch -u origin/master 

假設你已經簽出大師。如果不是, git branch -u origin/master master將工作