2011-11-17 18 views
9

Tôi biết tại sao không đưa các tệp Eclipse/IDE cụ thể vào VCS như Git (mà tôi đang thực sự sử dụng). Đó là một trong những lý do tôi đang sử dụng Maven và việc tạo các tệp này cho bạn và không phải là có chúng trong điều khiển phiên bản.Có nên bỏ qua các tệp cụ thể của Eclipse trong VCS không, nếu sử dụng Maven?

Nhưng tôi tự hỏi, nếu những tập tin này nên bỏ qua trong .gitignore mà chính nó là dưới sự kiểm soát của VCS/Git:

.classpath 
.project 
.settings/ 
target/ 

Đây có phải là không sao chứ?

Ưu điểm và nhược điểm là gì khi tệp .gitignore trở thành loại IDE cụ thể như các tệp bị bỏ qua có IDE-spefific? Bất kỳ thực hành tốt nhất?

Trả lời

10

Với nhóm của tôi đã làm việc trên, quy tắc chung là bạn không kiểm tra bất kỳ thứ gì do Maven tạo ra hoặc thu được. Vì tệp pom.xml chứa mọi thứ bạn cần để tạo các tệp .project, .classpath và .settings, chúng tôi không kiểm tra chúng.

My .gitignore luôn chứa .classpath, .settings, .project và nhắm mục tiêu cho các dự án Maven.

Chỉnh sửa: Như đã đề cập trong nhận xét của tôi bên dưới, đây là một đề xuất khác: Nếu bạn thực sự muốn tránh có mục nhập Maven hoặc IDE cụ thể trong .gitignore, try writing your .gitignore so you list only what you DO want checked in.

* 
!stuffIDoWantToCheckIn 
+0

Bằng cách đăng ký .gitignore khi bạn mô tả và chỉ ra trong câu hỏi của mình, bạn gián tiếp kiểm tra dữ liệu về các tệp được tạo bởi Maven. – SimonTheSorcerer

+4

Bạn đang nghiêm túc suy nghĩ về điều này. Quan điểm của tôi là bạn không muốn kiểm tra bất cứ thứ gì được tạo ra bởi Maven. (Ngoài ra, mygitignore của tôi không được tạo bởi Maven.) Không có gì sai khi đưa vào các tệp tin cụ thể IDE, thư mục đầu ra và bất kỳ thứ gì khác mà bạn không muốn kiểm tra bên trong tệp .gitignore. Đó là, trên thực tế, toàn bộ quan điểm của nó. –

+0

Tuy nhiên, nếu bạn thực sự không muốn có các loại trừ cụ thể của IDE hoặc Maven trong .gitignore, có thể bạn có thể thử đặt các mục nhập phủ định để chỉ định những gì bạn muốn đăng ký. Tôi chưa bao giờ làm điều này, nhưng bạn sẽ đặt * vào .gitignore để bỏ qua mọi thứ và sau đó thêm các dòng bắt đầu bằng! liệt kê các ngoại lệ [có nghĩa là các mục nhập đó được đăng ký.] http://stackoverflow.com/questions/1279533/is-there-a-way-to-tell-git-to-only-include-certain-files-instead -of-ignoring-cer –

0

thường. Dự án và .settings/likley nên được phiên bản và bỏ qua!

. Classpath và target không được phiên bản nhưng bị bỏ qua.

Đây là lần khởi động đầu tiên trong khi thực hành thanh toán.

tức

  • Bạn nói everone sử dụng bốn không gian như tab, thông tin này được lưu trữ dưới .settings/xxx
  • nhưng bạn cung cấp không giới hạn, nơi họ phải cài đặt tomcat/của jdk của họ (được lưu trữ dưới .classpath)

ok?

+1

Tôi chưa bao giờ nghe nói về phiên bản ** và ** bỏ qua tệp. Loại này có hiệu lực gì? – SimonTheSorcerer

+0

Tôi không nghĩ rằng cài đặt phiên bản giúp mọi người. Tùy thuộc vào các plugin bạn sử dụng, có thể có bất kỳ nội dung nào (cache, máy hoặc thậm chí là những thứ phụ thuộc vào hệ thống tệp, ...), vì vậy tôi sẽ bỏ qua tất cả thời gian. Tôi muốn nhật thực quản lý chúng, và vâng, tôi cần một cách để tái tạo chúng. – mliebelt

+0

@SimonTheSorcerer Bạn có thể buộc tải xuống một lần và không bao giờ tải lên. Thực hành này được sử dụng để nói với những người mới về những gì mà một dự án ràng buộc cần. Những người mới này sẽ không thể cam kết cấu hình của họ! –

1

Tôi đồng ý trên không đặt các tập tin IDE dưới sự kiểm soát phiên bản, điều này đôi khi gây ra tất cả các loại đau, và như bạn đã đề cập sử dụng maven render này không cần thiết như bất kỳ nhà phát triển chỉ có thể nhập khẩu các dự án từ POM và nhận đi

Nếu những tập tin này không được đưa vào .gitignore họ dễ dàng có thể được kiểm tra trong do nhầm lẫn

hơn nữa tôi không tìm cách liệt kê chúng trong .gitignore làm cho nó IDE cụ thể, bạn có thể liệt kê các file dự án của nhật thực, IntelliJ IDEA và Netbeans, tất cả đều giống nhau .gitignore nếu các thành viên trong nhóm của bạn sử dụng kết hợp differe nt IDE. Theo thời gian, bạn có thể tích lũy một mẫu .gitignore bỏ qua các tệp dự án từ tất cả các IDE được sử dụng trong nhóm của bạn để sử dụng bất cứ khi nào bạn tạo một kho lưu trữ mới

Nếu bạn hoàn toàn không đưa chúng vào dự án .gitignore bạn có thể đặt chúng trong người dùng.Tuy nhiên, điều đó trong tâm trí của tôi hơi lỏng hơn vì nó phụ thuộc vào các máy phát triển riêng lẻ được cấu hình chính xác, và cũng cần phải được duy trì để được đồng bộ với bất kỳ bổ sung mới nào

Chỉnh sửa: Tôi hiện có tương đương .hgignore, cùng khái niệm cú pháp khác nhau, tôi chuyển đổi nó để git như một ví dụ về một tập tin .gitignore như

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

Bạn có thể cung cấp một mẫu như vậy .gitignore? – SimonTheSorcerer

+0

Tôi đã chỉnh sửa câu trả lời của mình bằng cách thêm một ví dụ .gitignore –

+0

Cảm ơn bạn. So với câu trả lời được chấp nhận, bạn sẽ thấy yêu cầu bảo trì phức tạp và bảo trì hơn. Chỉ cần tưởng tượng một IDE mới được hỗ trợ bởi Maven và bạn cần phải sửa đổi tất cả .gitignores của tất cả các dự án trong tất cả các chi nhánh, vv cho các nhà phát triển sử dụng nó. – SimonTheSorcerer

2

tôi nhận được thông tin của tôi từ bài viết sau: https://help.github.com/articles/ignoring-files

Điều đó cho thấy rằng bạn có thể tạo một tệp gitignore toàn cầu (đề xuất trong ~/.gitignore_global) có chứa .proje ct, vv Như các tập tin nằm ngoài repo, nó sẽ không hiển thị ...

Bạn đăng ký nó như là một thế giới bỏ qua tập tin với lệnh sau:

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

Ngoài ra, bạn có thể tạo một mỗi mục nhập gitignore không được theo dõi trong tệp .git/info/exlude

Các vấn đề liên quan