2016-04-19 183 views
-2

有2個文件被git跟蹤。git忽略正在跟蹤的文件

config/template.json 
config/test.json 

我修改了它們,希望永遠忽略它們。我試圖將它們添加到根.gitignore

/config 
config/template.json 
config/test.json 

,並因爲它沒有工作做,也給config.gitignore

template.json 
test.json 

問題:當我git pull,它說:

error: Your local changes to the following files would be overwritten by merge: 
    config/template.json 
    config/test.json 
Please, commit your changes or stash them before you can merge. 
Aborting 

我希望我的改變留在本地和被髮送到遠程回購。這是怎麼回事?我沒有忽略這些文件嗎?該怎麼辦?

回答

1

一旦文件提交到Git會把它們進行跟蹤,即使你以後不用理會。 解決這個問題的實用方法是隱藏變化,然後根據需要推/拉/等,並彈出變化。

永久的解決方案是將所有toghether從源代碼控制刪除的文件,並讓他們在上市的.gitignore所以它們不會添加回來。

+0

感謝。我只是'git rm --cached config/test.json',但它在git pull上保持相同的錯誤信息。 – Patrick

3

它在documentation第一段解釋說:

一個gitignore文件指定的Git應該忽略故意未跟蹤文件。 Git已經跟蹤的文件不受影響。

當你添加一個文件.gitignore你也必須從資源庫中使用命令將其刪除:

git rm --cached filename 
+0

謝謝我只是刪除指定的文件。錯誤信息留在git pull上。還有什麼可以做的? – Patrick

+0

可能有衝突。你刪除了文件,其他人改變了它。如果是這種情況,那麼你必須使用你的解決方案解決衝突(刪除文件)並提交。 – axiac

+0

這些文件沒有改動。選項是提交或隱藏。如果我提交這些文件,它們是否會被讀取? – Patrick