2016-09-22 75 views
-1

我是使用GIT的新手,我閱讀了文檔指南,但似乎無法將我的頭圍繞在一件事上。爲什麼我必須在git中將git pull起源<branch-name>?

假設github源代碼包含兩個分支,master和foobar。 現在,當我在我的系統上執行git branch時,它顯示了兩個分支的名稱,這意味着我的系統上都有分支。

然而,當我做了git checkout foobar,然後做git pull,沒有真正發生,而不是混帳告訴我,

`沒有爲當前分支沒有跟蹤信息。 請指定您想要合併的分支。 有關詳細信息,請參見git-pull(1)。

git pull <remote> <branch> 

如果要設置這個分支跟蹤信息,你可以這樣寫:

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

`

只有當我執行git pull origin foobar的文件修改,並根據修改了什麼已在GitHub上更新。爲什麼會發生?我在哪裏做錯git pull。 AFAIK,我認爲做git pull會更新我當前的分支到最新的代碼提交。

回答

0

Git是一個強大的工具,它的大部分功能給了用戶。 Pulling =獲取+合併。 git應該自動假設,因爲你在本地foobar(你簽出了本地分支foobar不是遠程),如果有遠程它應該從它拉? Git不會自動回答這個問題。

從我對git的使用經驗來看,除非你從GUI開始,否則你會覺得很沮喪,就像sourcetree一樣。

總而言之,要從遠程拉出,您需要指定遠程分支,不是本地的,它會嘗試將它與當前的本地工作分支合併。

1

聽起來好像你已經創建了一個本地分支foobar,另外你的倉庫中還有一個分支,也叫做foobar。儘管名稱相同,但這些分支尚未鏈接。

如果你沒有一個本地分支foobar,然後git checkout foobar成爲git checkout -b foobar --track origin/foobar

這第二部分(--track origin/foobar)是你要注意的部分。這爲您的初始結賬操作設置了遠程跟蹤。

要解決這個問題,你可以執行命令讓你運行 - 這只是在事後設置上游分支。請注意,在大多數情況下,這是一個壞主意(因爲原始結帳命令應該正在做)。但是,在你的情況下,你似乎創建了兩個單獨的但(實質上)相同的分支。

相關問題