2015-06-12 46 views
0

我在IntelliJ上做了大部分工作,Jetbrains建議將IDE的config目錄.idea保存在VCS中。令人煩惱的是,該目錄包含許多文件(例如每個Maven依賴關係的XML文件),並且經常會改變某個項目的某些依賴關係/更改某些IDE設置,整理一些內容,進行一些提交,然後在某個時間之後將是.idea的一小部分變化。有沒有辦法讓git無聲地添加目錄中的所有更改?

用修改後的提交等來管理這個問題並不是一個巨大的困難,但我真的寧願不去想它 - 這些只是支持文件,沒有它們,項目就沒有那麼有效。簡而言之,我希望它們在git中用於備份目的 - 它們的版本歷史幾乎完全是多餘的(對我來說,無論如何)。

有沒有辦法讓git靜靜地盲目地添加這些所有這些文件,只要它有機會,幾乎像.gitignore的倒數?換句話說,僅在.idea中的更改會顯示爲乾淨的工作樹,但是他們會在下一次提交時承諾?

我確信這是一個糟糕的想法™,但git是一個複雜的野獸,如果存在某種機制,我不會感到驚訝。

+0

這是一個非常糟糕的主意(?)把這樣的噪音交給你的項目。它會造成的一個問題是,每當你切換分支時,該文件夾的內容都會改變。如果你想要版本控制/備份該文件夾 - 使它成爲一個單獨的repo,即'cd .idea; git init; git add *; git commit -m「初始提交」# – AD7six

+0

你使用Maven嗎?如果是的話,你當然不需要在版本控制下保存'.idea'。 –

+0

@NickVolynkin我不知道它有多必要,但我知道它存儲除依賴項之外的其他IDE設置。 Jetbrains的官方建議將'.idea'保存在VCS下。 – SLD

回答

1

您可能已將整個.idea文件夾添加到Git,這是一個糟糕的創意™,因爲其中一些文件包含用戶特定設置,如workspace.xml

The standing recommendation來自IntelliJ的是省略選擇文件,具體取決於您使用的項目結構。

  • 如果您使用的是.idea文件夾,省略workspace.xmltasks.xml.gitignore

    .idea/workspace.xml 
    .idea/tasks.xml 
    
  • 如果您使用的是傳統的.iml.ipr.iws文件,在省略.iws.gitignore

    *.iws 
    

這樣做了之後,你會想從資料庫中刪除

git rm --cached .idea/workspace.xml .idea/tasks.xml 

git rm --cached *.iws 

你應該注意到的Git想變化少了很多經常補充這些文件。


最好站立的意見,我對你是不是使用這個來引導項目;儘管你可以,但在其他依賴管理方案(如Gradle和Maven等IDEA可以很好地配合)中有更好的選擇。

+0

我支持Gradle和Maven的建議。 –

+0

謝謝你。也許我應該澄清:我絕對*不*使用這個來引導任何東西 - 這是用一個合適的工具(leiningen)處理的。我只是試圖遵循Jetbrains關於將其保留在VCS中的建議,而不會在處理看似隨機點的所有自動更改時出現明顯的輕微不便。 – SLD

相關問題