在什麼情況下,git pull origin master
命令會導致與git checkout master
不同的工作副本狀態 - >git pull
- >git checkout feat-a
- >git merge master
?什麼可能導致`git pull`無法看到遠程更改?
長話短說。
我有一個特性分支,讓我們把它叫做feat-a
。我是在這個分支上工作的唯一開發人員。該分支是從master
分支創建的。兩個分支都有遠程起源,origin/feat-a
和origin/master
。沒什麼特別的,你的典型的git存儲庫安排。
今天我想從遠程master
更新我的功能分支。從之前與其他開發人員的溝通中,我知道當我將遠程master
合併到我的功能分支中時會發生衝突的更改。
我正在使用SourceTree。因此,在登出feat-a
分支後,我在原始/主分支上打開了上下文菜單,並選取了Pull origin/master into current branch
。我很震驚地看到Git報告說我的分支已經是最新的了。我知道這是不對的,必須在遠程master
分支上進行更改。我重複了幾次這個命令。始終獲得相同的最新消息。
爲了100%確定,我做了「漫長的路程」。我查看了master
分支,點擊了Pull
按鈕。該分支得到最新的提交更新。然後,我檢出了feat-a
分支,然後在主分支上拉取了上下文菜單,並選取了Merge master into current branch
。瞧!這是我期望得到的合併衝突!
這讓我感到困惑。我曾以爲,執行從origin/master
pull
到我當前分支是一樣的退房master
,拉,檢查出的其他分支,然後合併master
進當前的分支(用例中,從遠程master
揪成另一分支不更新我的當地master
,但這不應該影響這個問題)。
從本質上講,從origin/master
到feat-a
某種原因pull
命令試圖說服我,有上origin/master
沒有變化,只有用開關支路和手動合併和預期一樣很長的路要走。
我不確定SourceTree是否做了可能會影響此問題的特殊事情。
我也面臨過這樣的問題,而昨天從GitHub'主branch'拉代碼到本地機器我'Heroku的branch'但它說你的分支上最新,然後跟着你所提到的步驟。我認爲它一定是一個錯誤。 – sahil
驗證您的跟蹤是您的想法。 'git branch -avv'會告訴你爲每個本地分支跟蹤哪些遠程分支。你可能會發現'master'跟蹤的不是'origin/master'。 –