2017-07-21 226 views
2

我組織中的某個人提交.idea文件。我知道正確的答案是隻刪除這些,但我必須解決它,因爲刪除它會影響其他開發人員的工作流程,即使我不同意,我現在也無法從git中刪除它。Git - 完全忽略文件

我知道我可以隱藏和彈出,並且這樣做了一段時間,但不斷地從.idea提交文件在意外,我只是厭倦了不得不修改我的提交。

所以我試圖讓混帳到這個文件夾中完全忽略的文件,特別是.idea/modules.xml

我已經試過如下:

git update-index --assume-unchanged .idea/modules.xml 
git update-index --skip-worktree .idea/modules.xml 

這使得經驗略勝一籌,該文件將不再在git狀態下顯示,我可以使用git commit -am而不會意外對提示文件進行更改。

但是,當我嘗試拉動時,仍然出現錯誤。

git pull origin --rebase 
error: Your local changes to the following files would be overwritten by checkout: 
.idea/modules.xml 

,我覺得奇怪,因爲git的甚至無法找到該文件,如果我嘗試檢查出來:從家釀

git checkout .idea/modules.xml 
error: pathspec '.idea/modules.xml' did not match any file(s) known to git. 

我使用的是最新版本的Git

git --version 
git version 2.13.3 

這是Git中的錯誤嗎?有沒有其他的配置選項可以用來完全忽略這個文件?

+0

'.gitignore'?或者你已經考慮過了嗎? –

+0

你可以告訴你的想法將它的文件寫入不同的目錄,這樣你就不會修改Git中的文件? –

+0

'.gitignore'對已經提交和跟蹤的文件沒有幫助。它只是阻止你「添加」它們。 – amalloy

回答

-1

我知道正確的答案是隻刪除,但我必須解決它

你沒有解決它:記錄其刪除:

git rm --cached -r .idea/ 
echo ".idea/" >> .gitignore 
git add . 
git commit -m "remove .idea/ folder" 
git push 

從那裏開始,您的回購中不再有.idea文件夾。

刪除文件夾不是一個選項。它用於開發人員的工作流程,目前無論我多麼不同意它必須呆在那裏。

然後將其重命名:

git mv .idea .idea_settings 
echo ".idea/" >> .gitignore 
git add . 
git commit -m "rename .idea/ folder" 
git push 
  • 想要使用這些設置任何用戶都可以用符號鏈接它。

    ln -s .idea .idea_symlink 
    
  • 不想使用它會保持一個私人未經跟蹤.idea

+0

刪除文件夾不是一個選項。它用於開發人員的工作流程,目前無論我多麼不同意它必須呆在那裏。這就是爲什麼我說現在我必須解決它。 –

+0

@AlexSpence我編輯了答案以解決您的評論。 – VonC

+0

@AlexSpence我的替代方案可能有幫助嗎? – VonC

0

我將改寫該項目丟棄它們的歷史誰的任何用戶...但是這只是我。我不希望那些不屬於該項目的東西在那裏...特別是如果它是相對容易做到這一點。

0

要完全停止跟蹤文件,您需要將其從索引中刪除。這可以用這個命令完成。

git rm --cached <file> 

從頭修訂版本中刪除文件將發生在下一次提交。

+0

@Alex Spence爲您效力。 –

+0

這就是我在我自己的答案中所說的:-1。此外,OP還明確表示這不是一種選擇。 – VonC