2012-04-16 33 views
55

Có thể thêm tệp .gitignore vào số .gitignore không?Thêm .gitignore vào gitignore

.gitignore 

Không làm việc mặc dù

Tôi không muốn nhìn thấy nó trong các tập tin đã chỉnh sửa

+3

tại sao bạn muốn thực hiện điều đó? chỉ cam kết thay đổi của bạn. '.gitignore' được cho là một phần của kho lưu trữ của bạn, liệt kê các mẫu tệp là rác cho dự án. – KurzedMetal

+1

'.gitignore' phải là một phần của kho lưu trữ của bạn, để mọi người trong nhóm của bạn bỏ qua hoặc kiểm tra trong cùng một tệp. Chỉ vì '.gitignore' nằm trong thư mục mã của bạn ở đâu đó không có nghĩa là bạn phải triển khai nó. –

+0

có thể trùng lặp của [Làm cách nào để yêu cầu Git bỏ qua ".gitignore"?] (Http://stackoverflow.com/questions/767147/how-do-i-tell-git-to-ignore-gitignore) –

Trả lời

83

Tệp .gitignore là để ngăn chặn tất cả những người cộng tác trong dự án bao gồm một số tệp phổ biến trong dự án, chẳng hạn như đã tạo các tệp bộ nhớ cache. Vì vậy, bạn không nên bỏ qua .gitignore, vì mục đích của nó là để được bao gồm trong repo.

Nếu bạn muốn bỏ qua các tệp chỉ trong một repo nhưng không cam kết danh sách bỏ qua, bạn có thể thêm chúng vào .git/info/exclude trong repo đó.

Nếu bạn muốn bỏ qua một số tập tin trên mỗi repo trên máy tính của bạn, bạn có thể tạo ra các tập tin ~/.gitignore_global và sau đó chạy

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

Có bạn có thể; bạn vẫn thấy nó trong các tệp đã chỉnh sửa vì nó vẫn được theo dõi bởi git và các tệp được theo dõi bởi git luôn được đánh dấu là đã sửa đổi ngay cả khi chúng ở trong .gitignore. Vì vậy, chỉ cần untrack nó.

Nhưng tại sao không cam kết hoặc đặt lại các thay đổi bạn có trên đó? Đó là một cách tốt hơn nhiều để loại bỏ nó khỏi tình trạng ... Cũng lưu ý rằng bất kỳ bản sao mới của bạn repo sẽ phải thêm .gitignore của nó, có thể gây phiền nhiễu.

+0

Có, và bạn sẽ cần phải loại bỏ nó một cách riêng biệt khỏi git bởi 'có rm --cached .gitignore', có lẽ. – Tadeck

+0

git rm --cached .gitignore đang xóa khỏi git. Đó là phá hoại và không mong muốn. Làm thế nào để có .gitignore bỏ qua cho bản sao cục bộ? – javadba

11

Không thực sự là lý do chính đáng để làm điều này. Nếu bạn muốn các tệp bị bỏ qua chỉ cho bản sao của bạn, hãy thêm chúng vào .git/info/exclude, chứ không phải .gitignore

16

Một .gitignore thể bỏ qua bản thân nếu nó chưa bao giờ được kiểm tra trong:

[email protected]:~$ git --version 
git version 1.7.9.5 
[email protected]:~$ git init temp 
Initialized empty Git repository in /home/mhaase/temp/.git/ 
[email protected]:~$ cd temp 
[email protected]:~/temp$ touch .gitignore foo bar baz bat 
[email protected]:~/temp$ git status 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  .gitignore 
#  bar 
#  bat 
#  baz 
#  foo 
[email protected]:~/temp$ echo "foo" >> .gitignore 
[email protected]:~/temp$ echo ".gitignore" >> .gitignore 
[email protected]:~/temp$ git status 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  bar 
#  bat 
#  baz 
nothing added to commit but untracked files present (use "git add" to track) 

Nếu bạn đăng ký .gitignore (trước khi bạn yêu cầu bỏ qua), sau đó nó sẽ luôn hiển thị trong trạng thái git, ngay cả khi sau này bạn sửa đổi nó để bỏ qua chính nó.

+0

Chính xác, đây là trường hợp của tôi. Tôi muốn có một '.gitignore' cục bộ để làm việc với' git-svn', cái mà không ai nên thấy. Vì vậy, tôi chỉ cần thêm nó vào chính nó và nó chỉ làm việc. Nhưng sau đó tôi googled để xem nếu một số người căng thẳng sẽ giải thích cho người khác làm thế nào điều này là "xấu". Câu trả lời này nên được chấp nhận, và sau đó tôi sẽ upvote '.git/info/exclude' gợi ý cũng. Vì vậy, nó chỉ cần được untracked ... Không phải là rất đáng ngạc nhiên, ít nhất là nếu bạn đã từng bị "lật đổ" (svn). –

+0

Tôi có tệp '.gitignore' được sao lưu trước. Sau đó, tôi sử dụng 'git rm .gitignore' và cam kết thay đổi đó. Cuối cùng, thêm và commit '.gitignore' một lần nữa với rule cho' .gitignore'. Nó hoạt động! – qzhang