2016-02-24 78 views
5

在什麼情況下,git pull origin master命令會導致與git checkout master不同的工作副本狀態 - >git pull - >git checkout feat-a - >git merge master什麼可能導致`git pull`無法看到遠程更改?

長話短說。

我有一個特性分支,讓我們把它叫做feat-a。我是在這個分支上工作的唯一開發人員。該分支是從master分支創建的。兩個分支都有遠程起源,origin/feat-aorigin/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/masterpull到我當前分支是一樣的退房master,拉,檢查出的其他分支,然後合併master進當前的分支(用例中,從遠程master揪成另一分支不更新我的當地master,但這不應該影響這個問題)。

從本質上講,從origin/masterfeat-a某種原因pull命令試圖說服我,有上origin/master沒有變化,只有用開關支路和手動合併和預期一樣很長的路要走。

我不確定SourceTree是否做了可能會影響此問題的特殊事情。

+0

我也面臨過這樣的問題,而昨天從GitHub'主branch'拉代碼到本地機器我'Heroku的branch'但它說你的分支上最新,然後跟着你所提到的步驟。我認爲它一定是一個錯誤。 – sahil

+0

驗證您的跟蹤是您的想法。 'git branch -avv'會告訴你爲每個本地分支跟蹤哪些遠程分支。你可能會發現'master'跟蹤的不是'origin/master'。 –

回答

1

你說你使用Sourcetree,所以我想你實際上並沒有在命令行上鍵入git pull origin master。我的猜測是它在GUI消息中令人困惑,或者是Sourcetree中的錯誤。

我寧可要求Sourcetree開發人員。

+0

是的,情況可能如此。我在更新SourceTree後遇到了這個問題。我之前沒有遇到過這樣的問題,所以這可能確實是SourceTree中的一個新bug。今天我會嘗試重現它。 – JustAMartin

+0

你說得對。我和我的一些同事成了這個bug的受害者:https://jira.atlassian.com/browse/SRCTREEWIN-4329我想這對於信任GUI工具的代價太大了。 – JustAMartin

相關問題