2011-11-17 28 views
9

我知道爲什麼不將Eclipse/IDE特定的文件提交到像Git這樣的VCS(我正在使用它)。這是我使用Maven並讓它爲您生成這些文件的原因之一,並且而不是使它們受版本控制。如果使用Maven,VCS中的Eclipse特定文件應該被忽略嗎?

但我不知道,如果這些文件應該在的.gitignore這本身就是在VCS/Git的控制被忽略:

.classpath 
.project 
.settings/ 
target/ 

這樣行嗎?

自從.gitignore文件本身成爲一種特定於IDE的文件之後,有什麼優點和缺點?因爲忽略的文件有IDE特定的文件?任何最佳做法?

回答

10

隨着我所從事的團隊工作,一般規則是您不檢查由Maven生成或獲得的任何內容。由於pom.xml中包含了你需要創建的.project,的.classpath和.settings文件的一切,我們不檢查他們進來。

我的.gitignore總是包含的.classpath,.settings,.project文件,並Maven項目的目標。正如我在下面的評論中提到的,這裏有另外一個建議:如果你真的想避免在你的.gitignore,try writing your .gitignore so you list only what you DO want checked in有Maven或IDE特定的條目。

* 
!stuffIDoWantToCheckIn 
+0

通過檢查.gitignore的描述並在我的問題中指出,您可以間接檢查由Maven生成的文件的數據。 – SimonTheSorcerer

+4

你真的在想這個。我的觀點是你不想檢查Maven產生的任何東西。 (另外,我的.gitignore不是由Maven生成的。)將IDE特定的文件,輸出文件夾以及不想在.gitignore文件中檢入的其他任何內容都沒有問題。事實上,這就是它的全部要點。 –

+0

但是,如果你真的不想在.gitignore中使用IDE或Maven特定的排除項,也許你可以試着放入否定條目來指定你想要簽入的內容。我從來沒有這樣做過,但是,你會把*放在.gitignore中忽略一切,然後添加以!開頭的行!列出例外[這意味着這些條目會得到檢查。] http://stackoverflow.com/questions/1279533/is-there-a-way-to-tell-git-to-only-include-certain-files-instead忽略-cer –

0

通常.project和.settings /應該可能被版本化爲並被忽略!

.classpath和target不應該版本化,但應該被忽略。

這是結帳練習中的第一次inital啓動。

  • 你告訴EVERONE使用四個空格選項卡,這些信息都存儲在.settings/XXX
  • ,但你給沒有限制,他們不得不安裝它們的tomcat/JDK的(下保存.classpath)

好嗎?

+1

我從來沒有聽說過版本控制**和**忽略文件。這有什麼效果? – SimonTheSorcerer

+0

我不認爲版本控制設置可以幫助任何人。根據您使用的插件,可能會有任何內容(緩存,機器甚至文件系統相關的內容......),所以我會一直忽略這些內容。我想日食來管理這些,是的,我需要一種方法來重新創建它們。 – mliebelt

+0

@SimonTheSorcerer你可以強制下載一次,並永不上傳。這種做法是用來告訴newcommers項目需要的綁定。那些Newcommers將無法提交他們的配置! –

1

我就沒有把IDE文件版本控制之下同意,這偶爾會導致各種痛苦,和你提到使用maven呈現這種不必要的,因爲任何開發人員可以輕鬆導入從POM項目,出發吧

如果這些文件不放在他們可以很容易被錯誤

而且我不覺得在上市的.gitignore他們使得IDE具體檢查在的.gitignore,你可以列出日食的項目文件, IntelliJ IDEA和Netbeans,如果你的團隊成員使用混合不同的話,它們都在同一個.gitignore中nt IDE。隨着時間的推移,你可能會積累一個模板.gitignore忽略你團隊中使用的所有IDE中的項目文件,以便在你創建一個新的存儲庫時使用。

如果你完全反對把這些放在項目.gitignore中,他們在用戶中。gitignore,但在我看來有點寬鬆,因爲它取決於各個開發機器的配置是否正確,並且這些需要保持與任何新增內容保持同步。

編輯:我目前有一個等效的.hgignore,相同的概念不同的語法,我將它轉換與git作爲這樣一個的.gitignore文件的例子

/target/ 
/bin/ 
/build/ 
/.classpath 
/.project 
/.settings/ 
/.checkstyle 
/atlassian-ide-plugin.xml 
/.idea/ 
/*.iml 
/*.ipr 
/*.iws 
*.orig 
*.swp 
*~ 
+0

你能提供這樣一個模板.gitignore嗎? – SimonTheSorcerer

+0

我編輯了我的答案,添加一個例子.gitignore –

+0

謝謝。與公認的答案相比,您的.gitignore看起來更復雜,需要更多維護。試想一下,Maven支持一個新的IDE,並且您需要修改所有分支機構中所有項目的所有.gitignores,以便使用它的開發人員。 – SimonTheSorcerer

2

我碰到下面的文章我的信息:https://help.github.com/articles/ignoring-files

這表明,你可以創建一個包含.proje的全局gitignore文件(在〜/ .gitignore_global下建議) CT等。由於該文件是回購之外,它不會顯示...

你把它註冊爲一個全球性的忽略與下面的命令文件:

git config --global core.excludesfile ~/.gitignore_global 

或者,你可以創建一個per-repo未跟蹤的.git/info/exlude文件中的gitignore條目