2011-09-23 36 views
41

Tôi đã tạo tệp .gitignore_global và đặt nó vào thư mục cài đặt git của mình. Khi tôi chạy lệnh:Bỏ qua toàn cầu Git không hoạt động

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

quy tắc trong tệp bỏ qua không được áp dụng cho cam kết của tôi.

Khi tôi đổi tên tệp .gitignore và đặt nó vào thư mục gốc của dự án, các quy tắc sẽ áp dụng.

Có gì sai ở đây?

+0

@Jarrod '~/.gitignore_global' là ý nghĩa của OP và chỉ là lỗi đánh máy, mặc dù anh ấy đã chấp nhận câu trả lời của tôi, để chỉnh sửa của bạn không phải là goo d – CharlesB

Trả lời

109

Có lẽ bạn cần làm:

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

Và để có một số cà phê.

+0

Xin lỗi đó là ý tôi. Người mà tôi đã sao chép chỉ rối tung để xem những gì đã hiệu quả. – user880954

+0

Đúng đối với cà phê và răng. Bạn có chắc chắn .gitignore_global nằm trong $ HOME của bạn không? bạn nói rằng bạn đã cài đặt nó trong thư mục cài đặt git? – CharlesB

+0

bất kỳ ý tưởng nào tại sao nó vẫn không hoạt động ở đây? Tôi có một tập tin .7z mà tôi muốn bỏ qua; Tôi đã thêm các quy tắc sau: https://gist.github.com/octocat/9257657; và sau khi tôi thay đổi tập tin, nó vẫn được phiên bản trên .git: ( –

3

Tệp phải nằm trong thư mục chính của bạn. Trên cửa sổ, điều này thường có nghĩa là: C: \ tài liệu và cài đặt \ [người dùng].

Trên Linux đó là: /home/[user]

4

Lưu ý: bắt đầu git1.7.12 (August 2012):

Giá trị:

  • core.attributesfile mặc định là $ HOME/.config/git/attributes và
  • core.excludesfile mặc định là $HOME/.config/git/ignore tương ứng khi các tệp này tồn tại.

Vì vậy, nếu bạn tạo một file $HOME/.config/git/attributes, bạn thậm chí không phải đặt cài đặt core.excludesfile của bạn.

8

Tôi thấy rằng khi tôi đã định nghĩa nó như thế này:

git config --global core.excludesfile $HOME/.config/git/ignore 

nó đã không làm việc. Thay đổi nó để không sử dụng biến $ HOME, như sau:

nó ngay lập tức bắt đầu hoạt động. Hy vọng điều này sẽ giúp người khác.

FYI:

$ git --version 
git version 1.7.10.2 (Apple Git-33) 
+0

Tôi cũng quan sát điều này. Tôi lướt qua tài liệu nhưng không tìm thấy bất cứ điều gì: Ngoài .gitignore (mỗi thư mục) và .git/info/exclude, git nhìn vào tệp này để tìm các mẫu tệp không được theo dõi. "~ /" được mở rộng thành giá trị của $ HOME và "~ user /" vào thư mục chính của người dùng được chỉ định. – rliu

46

Nghĩ rằng tôi sẽ chip trong về vấn đề này. Có một lý do khác khiến tệp bỏ qua toàn cầu dường như không hoạt động. Đó là điều mà tôi không nghĩ đã được đề cập trong các câu trả lời trước đó. Thật rõ ràng là - tất nhiên là - rất dễ bỏ lỡ.

Đó là, git sẽ chỉ bỏ qua tệp mới. Nếu tập tin đã được theo dõi bởi git, thì dĩ nhiên git sẽ không bỏ qua nó! Vì vậy, bất kỳ mẫu nào trong bất kỳ tệp gitignore hoặc excludenào không áp dụng.

Điều đó có ý nghĩa. Tại sao git muốn bỏ qua các sửa đổi đối với các tệp mà nó đã theo dõi?Nếu tệp bị bỏ qua, trước tiên bạn phải yêu cầu git không theo dõi nó, sau đó git bỏ qua nó như được mô tả trong sách hướng dẫn. Để biết thông tin về cách hủy các tệp, see this answer.

Tất cả điều này dẫn tôi hỏi, liệu có thể bỏ qua các thay đổi đối với tệp được theo dõi không? Một lần nữa, git mang lại. Câu trả lời này; Git: Ignore tracked files cho chúng ta lệnh:

git update-index --assume-unchanged file

Cuối cùng, đây là một số thông tin bổ sung về gỡ lỗi git bỏ qua.

Các gitignore(5) Manual Page cho chúng ta biết:

Patterns mà người dùng muốn Git để bỏ qua trong mọi tình huống (ví dụ, sao lưu hoặc các tập tin tạm thời được tạo ra bởi trình biên tập của người sử dụng lựa chọn) thường đi vào một file đặc tả của lõi. excludeesfile trong ~/.gitconfig của người dùng. Giá trị mặc định của nó là $ XDG_CONFIG_HOME/git/ignore. Nếu $ XDG_CONFIG_HOME không được đặt hoặc rỗng, $ HOME/.config/git/ignore được sử dụng thay thế.

Vì vậy, tính năng này mới và thay thế ~/.gitignore_global trước đây đã đề cập trước đó.

Tiếp theo, và điều này thực sự hữu ích, đó là 1.8.2, bây giờ chúng tôi có một số công cụ gỡ lỗi tuyệt vời. Có một cái nhìn tại địa chỉ:

Git Learns to Ignore Better - New in 1.8.2

Điều này cho thấy làm thế nào để sử dụng check-ignore cờ mới để xác minh git được bỏ qua thành công mô hình của bạn, ví dụ

git check-ignore bin/a.dll --verbose

+1

'git update-index - file không thay đổi' là chính xác những gì tôi đang tìm kiếm, Cảm ơn! – Jai

0

cứng khác để theo dõi lý do tại sao .gitignore (_global) xuất hiện không làm việc có thể được khoảng trống trong các đường dẫn. Tệp không được tha thứ cho không gian hàng đầu. Vì vậy, hãy đảm bảo mỗi dòng tệp của bạn không có bất kỳ dòng nào trừ khi đó là dòng trống. Phải mất một lúc tôi mới hiểu ra được.

Chỉ cần thêm hai xu của tôi.

2

Tôi gặp sự cố này vì ban đầu tôi đã gọi 'git config core.excludefiles' mà không có --global và có giá trị sai và do đó nó đã lưu trữ thuộc tính cục bộ. Có vẻ như thuộc tính cục bộ đã ẩn thuộc tính cục bộ (ẩn chứa giá trị chính xác), hoàn toàn bỏ qua nó.

0

Gần đây tôi đã phạm sai lầm và chạy lệnh sau git config core.excludesfile tags này đã thay đổi con đường excludesfile vào một tập tin địa phương trong kho hiện tại, và cấu hình này đã được ghi vào tập tin cấu hình địa phương theo .git/config, vì vậy để khắc phục điều đó tôi vừa mở tập tin .git/config và xóa dòng excludesfile tags và mọi thứ trở lại bình thường.

0

Tôi gặp sự cố tương tự (trên Windows). Tôi đã kết thúc kiểm tra tập tin ~/.gitconfig của tôi và thấy rằng excludesfile của tôi đã được thiết lập để:

excludesfile = C:\\Users\\myUserName\\Documents\\gitignore_global.txt 

nhưng nó cần phải có được:

excludesfile = C:\\Users\\myUserName\\.gitignore_global 

Sau khi tôi thay đổi nó, tất cả mọi thứ đã làm việc như mong muốn.

0

Lý do khác khiến bỏ qua git toàn cục có thể không hoạt động: các ký tự ẩn trong đường dẫn.

tôi chỉ phát hiện ra đây là vấn đề của tôi khi dán thông điệp cảnh báo từ git-check-ignore vào thanh địa chỉ của Chrome, nơi nó may mắn trở nên rõ ràng:

enter image description here

(Đó là không hiển thị trên và điều này có thể là lỗ hổng gỡ lỗi dài thỏ ...)

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