2011-10-03 75 views
4

試圖從git repo中獲取,但獲取以下輸出。我認爲這些文件被跟蹤(如他們應該),但它表明它們不是。他們不在.gitignore。我大約有5-10分支落後。由於(據說)未跟蹤文件導致文件覆蓋的Git警告

git pull --rebase origin master 
From github.com:user/Project 
* branch   master  -> FETCH_HEAD 
First, rewinding head to replay your work on top of it... 
error: The following untracked working tree files would be overwritten by checkout: 
mountdoom/protected/models/UserHelper.php 
mountdoom/protected/models/UserRegistrationForm.php 
mountdoom/protected/runtime/state.bin 
mountdoom/protected/views/site/register.php 
Please move or remove them before you can switch branches. 
Aborting 
could not detach HEAD 

任何想法如何解決這個問題?

回答

4

它們在您檢出的版本中進行跟蹤,但未在之前檢出的版本中跟蹤。如果你不關心未跟蹤的版本,只需刪除它們。

如果你確實關心他們,在進行rebase之前提交他們。您可能必須合併爲rebase進程的一部分。

+0

git merge沒有'-f'選項 –

+1

@Jamie,true。 git pull的確如此,但你說得對,它不適用(似乎只適用於獲取部分)。 –

3

您可以將未跟蹤文件添加到索引(git add),git stash他們,然後做你的git pull --rebase然後git stash pop和解決衝突(如有)。

1

如果你只是想和我一樣來刪除這些文件,你可以運行

rm `git merge 2>&1 | sed "s/^[^\t].*/ /g" ` 

(你可能要與回聲,而不是RM先運行它來驗證結果)

+0

**用法:rm [-f | -i] [-dPRrvW]文件... 取消鏈接文件** –

1

所以似乎這個問題的一個場景是當一個文件已被刪除,你仍然有一個副本。出於某種原因,git無法理解它。

這些建議都不適合我。

最後,我可以通過git rm filenamegit commit -m "temporary commit",然後git pull --rebase修復它。

此時,git再次抱怨,然後我不得不添加要跟蹤的文件git add filename,git commit -m "temporary commit2",然後git pull --rebase

然後一切進展順利。我沒有看到我的臨時提交,因爲他們相互抵消。

+0

在某些情況下,甚至不需要第一部分。我所需要做的就是:'git add filename','git commit -m'臨時commit2'',然後'git pull --rebase'。 – BeC

相關問題