2012-03-12 31 views
102

Tôi muốn git bỏ qua tệp UserInterfaceState.xcuserstate của tôi trong dự án XCode4 của mình, nhưng tôi nên đặt tệp .gitignore ở đâu vào thư mục .git? hay ra ngoài? .git nằm trong cùng thư mục với tệp ProjectName.xcodeproj.gitignore tệp, tôi nên đặt nó trong dự án xcode ở đâu?

+0

thể trùng lặp của [đâu .gitignore tập tin thuộc?] (Http://stackoverflow.com/questions/5698148/where-does -gitignore-file-thuộc) –

Trả lời

124

Bạn có thể có một .gitignore trong mọi thư mục duy nhất trong dự án của mình.

Tuy nhiên, việc thực hành tốt nhất là phải có một .gitignore tập tin duy nhất trên thư mục gốc của dự án, và đặt tất cả các tập tin mà bạn muốn bỏ qua trong nó, như thế này:

ignoredFile.whatever 
ignoredDirectory/* 
directory/ignoredFileInsideDirectory 
.svn 

Khi bạn tạo ra các tập tin .gitignore , các tập tin bỏ qua có thay đổi hoặc mới vào kho sẽ không được hiển thị như đang chờ cam kết.

Bạn cũng có thể có một tệp git bỏ qua cục bộ cục bộ, sẽ quản lý tất cả kho lưu trữ git của bạn.

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

Phương án này là đặc biệt thú vị cho các tập tin bị bỏ qua mà không liên quan đến dự án, chẳng hạn như các file liên quan IDE và vân vân.

+1

Điều này .gitignore nên được thêm tại nguồn gốc hoặc trong bản sao chủ/bản sao của bạn? – Adil

+1

Tại địa phương (tất nhiên bạn sẽ đẩy nó xuất phát tại một số điểm). –

20

Bạn nên đặt tệp .gitignore vào thư mục gốc của dự án.

9

Bạn nên không công cụ cụ thể đặt tập tin vào tập tin .gitignore của dự án - trừ khi công cụ được yêu cầu phải được sử dụng bởi mỗi nhà phát triển của dự án.

Thay vào đó, tạo cá nhân tập tin toàn cầu .gitignore của bạn trong thư mục chính của bạn và kích hoạt nó:

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

Bây giờ bạn có thể đặt bất cứ tập tin được tạo ra bởi các công cụ phát triển của bạn vào tập tin .gitignore của bạn.

12

nơi tôi nên đặt tệp .gitignore ?, có nằm trong thư mục .git không?

Không có .gitignore bên trong thư mục .git. Tuy nhiên
này là một tập tin .git/info/exclude, cho phép bạn để loại trừ một tập tin cục bộ, thường khi bạn muốn loại trừ một tập tin duy nhất cho repo cụ thể này (với một alias like this one):

git config alias.exclude "!sh -c 'echo \"$1\" >> .git/info/exclude' -" 
git exclude UserInterfaceState.xcuserstate 

Nếu bạn cần loại trừ này tệp cho tất cả dự án tương tự, như Elnur Abdurrakhimov được đề cập trong his answer, loại trừ nó trên toàn cầu.

echo UserInterfaceState.xcuserstate >> ~/.gitignore 

Nhưng, như đã đề cập trong "Do we need to check in *.xcuserstate?", nếu nó là một loại của tập tin đó nên bỏ qua bởi bất kỳ người sử dụng repo đó, tôi sẽ thực sự phiên bản a.gitignore ở phía trên cùng của repo, với một nội dung tương tự như:

*.xcuserstate 

Bằng cách đó, bất kỳ người sử dụng repo mà thậm chí sẽ không nhận ra rằng tập tin này tồn tại và được tạo ra (bất kể tên của nó là): nó đã giành không hiển thị trong một git status bao giờ hết. .

Hoặc bạn có thể ignore xcuserdata/ hoàn toàn (hoặc trong một toàn cầu .gitignore, hoặc trong một phiên bản, như các tập tin generic GitHub Objective-C.gitignore

+0

Bạn là huyền thoại của GIT! luôn luôn câu trả lời của bạn là hữu ích nhất. –

+0

@JadChahine Cảm ơn bạn. Vui mừng được giúp đỡ (ít nhất, viết những câu trả lời đó giúp tôi học git) – VonC

21

Có có phương pháp tiếp cận để bỏ qua tập tin trong git:

  1. git toàn cầu Bỏ qua: - Trong phương pháp này, các quy tắc tùy chỉnh của bạn sẽ được áp dụng cho mọi thư mục git trong máy của bạn Thông thường, tệp này có thể được tạo theo đường dẫn ~/.gitignore_globalCách tiếp cận này tốt nếu bạn muốn loại trừ một số loại tệp được tạo bởi hệ điều hành hoặc ny các công cụ ghi nhật ký, đổi tiền và vv khác.
  2. Mỗi kho lưu trữ git bỏ qua: - Trong phương pháp này, quy tắc tùy chỉnh của bạn sẽ được áp dụng cho thư mục git cụ thể trong máy của bạn. Bạn có thể thêm các quy tắc địa phương cho mỗi kho lưu trữ vào tệp .git/info/exclude trong kho lưu trữ của mình. Các quy tắc được chỉ định trong tệp này sẽ không được cam kết, có nghĩa là các quy tắc sẽ không được chia sẻ với người khác. Nói chung cách tiếp cận này hữu ích để ngăn chặn việc cam kết các tệp được tạo cục bộ. Ví dụ: đối với các tệp do trình chỉnh sửa của bạn tạo.
  3. Mỗi đường dẫn git bỏ qua: - Trong trường hợp này, quy tắc tùy chỉnh của bạn sẽ được áp dụng cho đường dẫn con lưu trữ git cụ thể. Bạn có thể tạo .gitignore trong bất kỳ đường dẫn con nào của kho lưu trữ cụ thể của mình. Cách tiếp cận này thường được sử dụng để bỏ qua một số loại tệp chỉ trong thư mục cụ thể của kho lưu trữ cụ thể. Mặc dù tệp này có thể được thêm vào phiên bản kiểm soát bởi các đường dẫn khác và các kho lưu trữ khác.

Vì vậy, tôi gợi ý cho bạn là, nếu bạn muốn bỏ qua tập tin cụ thể của bạn (UserInterfaceState.xcuserstate) trong tất cả các kho của bạn phương pháp tốt nhất là sử dụng git toàn cầu bỏ qua cách tiếp cận. Tuy nhiên nếu tệp của bạn chỉ được tạo trong kho lưu trữ cụ thể, bạn có thể sử dụng phương pháp bỏ qua git cho mỗi kho lưu trữ.

Để biết thêm thông tin, bạn có thể đọc this bài đăng trên blog tuyệt vời. Và có mỗi quy tắc bỏ qua git bỏ qua ngôn ngữ cụ thể có thể được thành lập here. Và bạn có thể tự động tạo các quy tắc bỏ qua git chung cho ngôn ngữ, công cụ hoặc hệ điều hành cụ thể bằng cách sử dụng this web site.

5

thường, thực hành tốt nhất của mình để bao gồm các tập tin .gitignore trong thư mục gốc của dự án

+2

Đây chính xác là câu trả lời của tôi .. – heinrich5991

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