2012-12-03 18 views
15

我正與一個開發人員在這裏誰看到一個奇怪的問題,我從來沒有遇到過。他正在開發一個存儲庫,並且需要在推出之前從其他人處獲取最新的更改。他所有的改變都是承諾的。不能拉的B/C「你有未分離的變化」,但狀態說沒有變化

$ git pull 
Cannot pull with rebase: You have unstaged changes. 
Please commit or stash them. 

這似乎不夠合理,直到......

$ git status 
# On branch master 
# Your branch and 'origin/master' have diverged, 
# and have 3 and 1 different commit each, respectively. 
# 
nothing to commit (working directory clean) 

你說什麼?

我試過git reset --hard HEAD拉之前,但拉仍然失敗。

只有一個人看到了這一點,他在Mac上(OSX 10.6.8)。有任何想法嗎?我正要把我的頭髮拉出來。

+0

如果你運行'git config branch.autosetuprebase',你會得到什麼值?如果它被設置爲「always」,這可能解釋這裏發生的事情。 – ThomasW

回答

18

嘗試

git fetch 
git rebase -p origin/master 

如果不工作,你可以嘗試

git pull --no-rebase 

如何檢查爲何出現此信息

確保你在一個分支上,而不是一個獨立的頭。重新啓動不適用於分離的頭部。

運行以下命令,結果應該是不輸出。

git update-index -q --ignore-submodules --refresh 
git diff-files --ignore-submodules 
git diff-index --cached --ignore-submodules HEAD -- 
+2

有趣。只有合併('git pull --no-rebase')工作。任何想法爲什麼一個合併會起作用,但是一個rebase不會給出說明的原因和明顯的工作目錄狀態?去標記這個答案,但我想了解更多,所以我可以嘗試解決他的根本問題。謝謝你的幫助。 –

+0

@RobWilkerson我用一些檢查更新瞭解決方案,你可以運行你爲什麼得到這個消息。 –

+0

沒有快樂。運行這些命令後仍然無法拉出。哎呀。 –

-1

看起來好像有可能會發生rebase。先嚐試運行git rebase --abort

更加有力的方法來清理地方包括

  • 刪除工作目錄中的所有文件(不包括.git目錄,當然)

  • git clean -d -x -f-d:目錄,-x-f:force。將-f替換爲-n進行空運行)

然後跟進git reset --hardgit checkout

還有一個想法是嘗試一個git reset --hard HEAD~N - 即重置一些提交回來,並希望拉動將工作和快進本地。取而代之的

git pull 

+0

謝謝@chamila_c,但我已將其作爲我的試錯活動的一部分進行了嘗試。沒有快樂。 –

+0

'git fetch'怎麼樣 - 至少更新遠程的本地副本? –

+0

'git fetch'可以正常工作,但不幸的是,當我嘗試稍後的拉動時沒有任何影響。 –

6

你在使用本地文件系統還是nfs共享?

我在使用nfs共享時遇到了完全相同的問題。

我已經加入noatime選項的mount命令它幫助:

mount -t nfs -o noatime,... device dir 
0

您可以嘗試爲$ git的藏匿處,然後嘗試git的拉動。