2010-02-23 31 views
21

Tôi đã tạo tệp .gitignore trong thư mục có thư mục .git, nhưng tôi vẫn nhận được các tệp tôi đang cố gắng bỏ qua khi thực hiện quét lại kho lưu trữ.Làm cách nào để .đăng ký tệp bằng Git GUI?

Đây là nội dung của tệp.

# Ignored files 
*.suo 
*.user 
bin 
obj 
*.pdb 
*.cache 
*_svn 
*.svn 
*.suo 
*.user 
*.build-res 
TestResults 
_ReSharper* 

Tôi đang làm gì sai? tập tin giả định nằm ở đâu?

Trả lời

12

Bạn cần đảm bảo rằng tệp bạn vẫn đang xem hiện không được cam kết hoặc tổ chức.

Nếu bạn xóa chúng (git rm hoặc git rm --cached), sau đó thêm chúng dưới dạng tệp riêng tư, chúng sẽ bị bỏ qua.

+0

điều này phải là lý do vâng, cảm ơn. – Darkmage

1

Bạn đang định vị đúng. .gitignore nên ở cùng một thư mục, thư mục .git nằm ở đâu. Tệp bên trong cũng có vẻ chính xác. Tuy nhiên, tôi không có dòng nhận xét ở trên cùng.

6

Tệp của bạn có vẻ tốt. Chỉ cần chắc chắn rằng bạn không có bất kỳ loại khoảng trống nào ở đầu mỗi dòng, tôi mất 4 giờ để tìm lý do tại sao .gitignore của tôi không hoạt động chính xác; lý do là tất nhiên một vấn đề cut'n'paste nơi tôi đã có một đường thẳng đứng của không gian ở đầu của tập tin.

Bạn nên cẩn thận với git commit -a trước khi đảm bảo rằng tệp .gitignore của bạn thực sự làm sạch mọi thứ bạn không muốn. Đánh dấu từng tệp (hoặc sử dụng ký tự đại diện) với git add *.cpp *.h hoặc - như tôi thích - phát triển .gitignore của bạn khi bạn tiến bộ và luôn kiểm tra với git status trước khi cam kết.

Nếu bạn muốn kiểm tra lại rằng .gitignore của bạn thực sự hoạt động, try

git ls-files --others -i --exclude-standard 

này nên liệt kê tất cả các tập tin mà bạn đang bỏ qua.

Để làm sạch các tập tin mà bạn đã thêm vào (có thể sử dụng git add ., một sai lầm tất cả chúng ta thực hiện trong đầu =]), bạn có thể làm như @VonC nói: hoặc chạy

git rm <filename> 

hoặc

git rm --cached <filename> 

Một tùy chọn khác để xóa tất cả các tệp bạn đã vô ý thêm là xóa hoàn toàn kho lưu trữ của bạn và sau đó thêm lại mọi thứ. Nếu bạn muốn hiểu rõ ràng tất cả mọi thứ trong khu vực dàn, you can run

git --rm cached . 

Nhưng hãy nhớ để không chạy git add . Cho đến khi bạn đã thực hiện chắc chắn rằng tình trạng git chỉ liệt kê các tập tin bạn thực sự muốn trong kho.

Một điều rất hữu ích khác với git là nó không cần đường dẫn đến tệp khi sử dụng ký tự đại diện. Nếu bạn liệt kê các file bỏ qua của bạn và thấy rằng bạn muốn xoá tất cả *.suo*.log file, chỉ cần chạy

git rm --cached *.suo *.log 

và git sẽ chăm sóc của việc tìm kiếm tất cả các tập tin trong kho của bạn phù hợp với chữ ký ở bất cứ đâu trong cây họ đang có.

0

Khi tôi xem xét điều này, tôi nghĩ bạn quên cam kết tệp bỏ qua của mình.

2

Tôi đã thử nhiều cách để làm điều này hoạt động và cuối cùng cũng khá đơn giản:

Bạn phải cam kết .gitignore trước!

Ngoài ra, nếu bạn sử dụng TortoiseGIT - GitEx Commit Tool, có một tùy chọn để chỉnh sửa các tệp bị bỏ qua.

0

Không có giải pháp được lưu trong bộ nhớ cache nào có hiệu quả đối với tôi. Tệp cần phải được mã hóa dưới dạng ASCII/ANSI. Tôi đã thay đổi kết thúc dòng, nhưng điều đó một mình đã không sửa chữa nó. Tôi không thể tìm thấy url có các hướng dẫn này (xin lỗi, áp phích gốc!) Nhưng điều này đã hiệu quả đối với tôi:

  1. Cài đặt Notepad ++ nếu bạn chưa có. Textpad nên cũng hoạt động, nhưng tôi sử dụng Notepad ++.
  2. Mở tệp .gitignore bằng Notepad ++.
  3. Nhấp vào Xem | Hiển thị biểu tượng | Hiển thị tất cả ký tự. Bạn có thể sẽ thấy CR LF ở cuối mỗi dòng.
  4. Thực hiện tìm kiếm và thay thế (ctrl + h), đảm bảo rằng Mở rộng được chọn (góc dưới cho phép). Tìm kiếm \ r \ n và thay thế bằng \ n. Bạn sẽ thấy tất cả các thay đổi CR LF chỉ LF.
  5. Bây giờ hãy nhấp vào Mã hóa | Mã hóa trong ANSI.
  6. Lưu tệp và thoát.

Từ dấu nhắc lệnh trong cửa sổ hoặc dấu nhắc lệnh git, tùy theo bạn thích, khi bạn thực hiện trạng thái git, không nên hiển thị tệp trong .gitignore.

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