Git đang bỏ qua các tệp không có trong gitignore


117

Tôi có một kho lưu trữ git đang bỏ qua các tệp hình ảnh cũng như một số tệp khác, nhưng .gitignoretệp của tôi chỉ có nó bỏ qua một config.phptệp. Có một số tệp bỏ qua toàn cầu ở đâu đó mà tôi dường như không thể tìm thấy? Tôi phải chỉ định các tệp để thêm chúng ngay bây giờ và nó đưa cho tôi cảnh báo sau:

Các đường dẫn sau bị một trong các tệp .gitignore của bạn bỏ qua.

Nội dung trong ~/.gitconfigtệp của tôi chỉ là địa chỉ e-mail của tôi.


Câu trả lời:


198

git check-ignore

Sử dụng git check-ignorelệnh để gỡ lỗi tệp gitignore của bạn (loại trừ tệp).

Ví dụ:

$ git check-ignore -v config.php
.gitignore:2:src    config.php

Kết quả đầu ra ở trên chi tiết về mẫu phù hợp (nếu có) cho mỗi tên đường dẫn nhất định (bao gồm cả dòng).

Vì vậy, có thể phần mở rộng tệp của bạn không bị bỏ qua, mà là toàn bộ thư mục.

Định dạng trả về là:

<source> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>

Hoặc sử dụng lệnh sau để in trang chủ của .gitignorengười dùng và thư mục kho lưu trữ:

cat ~/.gitignore "$(git rev-parse --show-toplevel)"/.gitignore "$(git rev-parse --show-toplevel)"/.git/info/exclude

Ngoài ra, sử dụng git add -fcho phép thêm các tệp bị bỏ qua khác.

Xem: man gitignore, man git-check-ignoređể biết thêm chi tiết.

Cú pháp

git kiểm tra bỏ qua [tùy chọn] tên đường dẫn…

git kiểm tra bỏ qua [tùy chọn] --stdin


5
Điều này tốt hơn nhiều so với câu trả lời được chấp nhận. Không xúc phạm đến điều đó, nhưng điều này đã cứu một ngày của tôi. Cảm ơn bạn kenorb.
luanjunyi

1
Xứng đáng hơn. Phát hiện ra rằng một số gitignore kỳ lạ trong một số / nhà cung cấp / thư mục đã gây ra sự cố với phiên bản git mới nhất.
Manuel Arwed Schmidt

2
cái này đã cứu tôi ngày hôm nay ... dường như visual studio đã tạo ra một tập tin gọi là gitignore_global.txt trong thư mục người sử dụng tài liệu và điều này đã bỏ qua các tập tin tôi đã không thể (un) bỏ qua
Samuel

1
Hoàn hảo giải quyết vấn đề của tôi. Một số mẫu không dễ bắt mắt !!
Willa

54

Có thể tốt khi biết rằng cấu hình git của bạn có thể chứa tệp core.excludesfile là đường dẫn đến tệp có các mẫu bổ sung bị bỏ qua. Bạn có thể tìm xem bạn có cấu hình như vậy hay không bằng cách chạy (trong git repo có vấn đề):

git config core.excludesfile

Nếu nó in ra một đường dẫn tệp, hãy xem nội dung của tệp đó để biết thêm thông tin.

Trong trường hợp của tôi, tôi đã cài đặt git qua một phiên bản boxen cũ đã bỏ qua mẫu 'Biểu tượng?' rằng trong trường hợp của tôi đã đưa cho tôi cảnh báo, được đề cập trong câu hỏi này, đối với các biểu tượng thư mục (Tôi đang sử dụng hệ thống tệp không phân biệt chữ hoa chữ thường, đó là lý do tại sao Biểu tượng khớp với các biểu tượng).


2
Đây thực sự là vấn đề của tôi. Bạn không chắc chắn làm thế nào hoặc khi tập tin này được chỉnh sửa nhưng nó có file tôi muốn liệt kê trong nó
toxaq

2
Cảm ơn bạn, bạn đã cứu tôi hàng giờ đồng hồ đau đớn. Trong trường hợp của tôi, đó là việc cài đặt cây nguồn (một công cụ trực quan hóa git repo) được tạo một cách độc lập trong thư mục tài liệu một gitignore_global.txt bao gồm nhiều loại trừ.
Vật thể Cơ học,

Tôi đã Icon?bị bỏ qua chết tiệt đó.
Justin Skiles

Đây là trường hợp của tôi. Có khá nhiều quy tắc bên trong tệp bỏ qua toàn cầu. Thanks for the tip 1
Madness

Tôi đã có * .json trong lần bỏ qua toàn cầu của tôi - nói về một cơn ác mộng - cảm ơn bạn!
Jason Perfetto

31

Kiểm tra những điều này:

  1. Bạn đã tìm kiếm các tệp .gitignore khác chưa, vì có thể có nhiều tệp.

  2. Ngoài ra, hãy xem REPO / .git / config để xem có gì ở đó không.

  3. Bạn có thể thêm repo remove Local per-repo vào tệp .git / info /lude trong repo của bạn. Các quy tắc này không được cam kết với repo nên chúng không được chia sẻ với người khác. Phương pháp này có thể được sử dụng cho các tệp được tạo cục bộ mà bạn không mong đợi người dùng khác tạo ra, như tệp do trình chỉnh sửa của bạn tạo.


Không có tệp .gitignore nào khác trong kho lưu trữ, cũng như không có bất kỳ tệp .git / config nào bỏ qua bất kỳ thứ gì. .Git / thông tin / loại trừ được định cấu hình như thế nào?
Ian Hunter

4
Không rõ tại sao câu trả lời này được đánh dấu là đã trả lời. Làm thế nào chính xác vấn đề này đã được giải quyết?
Nhà phát triển tiếp theo

loại trừ là vấn đề của tôi. Tôi biết có một cách khác để bỏ qua, mà tôi đã sử dụng trong quá khứ, nhưng quên mất nó ở đâu!
Chucky

22

Tôi đã gặp vấn đề tương tự - một thư mục đang bị git bỏ qua với lỗi này:

➭ git add app/views/admin/tags/
The following paths are ignored by one of your .gitignore files:
app/views/admin/tags
Use -f if you really want to add them.
fatal: no files added

Cuối cùng tôi đã phát hiện ra vấn đề của mình là một dòng trong ~/.gitignore_global:

TAGS

phù hợp với đường dẫn app/views/admin/tags. Tôi đã sửa nó bằng cách thêm dấu gạch chéo vào đầu tệp gitignore chung

/TAGS

và git bắt đầu theo dõi lại thư mục của tôi.


3
+1 vì đã bắt tôi tìm kiếm các kết quả phù hợp từng phần ... gitignore_global.txt chứa "[Rr] elease * /" khiến thư mục "releasenotes" của tôi bị bỏ qua.
Trev

Để làm cho nó khó hơn nữa, git sẽ chỉ bỏ qua các tệp mới được thêm vào, không bỏ qua các tệp đã có trong repo. Vì vậy, khi tôi thêm "foo /" vào .gitignore của mình, nó chỉ bỏ qua các tệp được thêm gần đây trong thư mục con foo chứ không phải tất cả các tệp. Tôi đã mất một giờ để tìm ra lý do tại sao một số tệp bị bỏ qua và những tệp khác thì không.
ccleve

Tôi có cùng một vấn đề. SourceTree đặt tệp ~ / .gitignore_global trong menu Công cụ-> mục Tùy chọn-> tab Git. Sau khi tôi dọn dẹp trường Global Bỏ qua danh sách "git add ..." lệnh đã hoạt động.
Kate

Tôi gặp vấn đề tương tự. Tôi có helpthư mục đang bị bỏ qua. May mắn thay, tôi tìm thấy câu trả lời của bạn khá nhanh chóng.
Abdul Sadik Yalcin

9

Đối với tôi, tôi đã vô tình có một ký tự đại diện trong tệp ~ / .gitignore_global của mình. Có thể kiểm tra ở đó?


1
Đó chính xác là vấn đề đối với tôi. Tôi đã có * .png ở đó, không biết làm thế nào nó đến đó.
Shahar

3

Một điều khác để thử: Tôi đã có một thư mục B với .gitkho lưu trữ riêng của nó được lồng trong thư mục dự án A của tôi (nhưng không phải là một mô-đun con). Tôi đã thực hiện một số thay đổi đối với B và muốn biến nó thành một mô-đun con hiệu quả. Tôi tin rằng git A đã tự động bỏ qua B vì nó chứa kho lưu trữ riêng của nó (xem Kho lưu trữ git lồng nhau không có mô-đun con? ). Tôi đã đổi tên thư mục B và cố gắng sao chép nó một lần nữa dưới dạng mô-đun con, và điều đó mang lại cho tôi thông báo lỗi "bị bỏ qua bởi .gitignore" gây hiểu lầm. Giải pháp là xóa .gitkhỏi B.


2

Tôi đã gặp cùng một vấn đề giống như bạn. Câu trả lời duy nhất mà bạn nhận được liệt kê một vài nơi để kiểm tra, nhưng không có nơi nào trong số họ giải quyết được vấn đề cho tôi và từ nhận xét của bạn, tôi cũng không nghĩ cho bạn. Tôi không có tệp .gitignore KHÁC nào ẩn dưới cây thư mục; không có gì trong .git / config; không có gì trong .git / ingore / loại trừ

Nếu bạn vẫn gặp sự cố, hãy kiểm tra câu trả lời này . Nó đã giải quyết vấn đề cho tôi

Về cơ bản, hãy kiểm tra tệp ~ / .gitignore. Của tôi được gọi là ~ / .gitignore_global. Tôi không biết nó được tạo khi nào ( chắc chắn là tôi không tạo ra nó), nhưng tôi đã thử rất nhiều thiết lập git khác nhau khi tôi cài đặt lần đầu tiên, vì vậy một trong số chúng chắc chắn đã đặt nó ở đó.

Hy vọng câu trả lời của anh ấy cũng giúp ích cho bạn!


1

Một lý do khác để nhận được thông báo lỗi này từ git là khi thực hiện git submodule addlệnh trong khi lệnh git trước đó đã bị lỗi và rời khỏi tệp khóa (ví dụ: điều này có thể xảy ra khi bạn sử dụng các tập lệnh tùy chỉnh bao gồm các lệnh git và bạn không lưu ý tai nạn).

Nếu bạn thực hiện lệnh git committhay thế, trong khi không có điều kiện nào thay đổi ( git submodule addsẽ tiếp tục la hét rằng .gitignoretệp của bạn là nguyên nhân), bạn sẽ thấy một báo cáo lỗi khác thay thế:

$ git commit -a
fatal: Unable to create '..../.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

và thực sự xóa tệp khóa:

rm .git/index.lock

giải quyết vấn đề. (Điều này xảy ra với phiên bản git 2.1.0.9736. Nó có thể được khắc phục trong các bản phát hành git trong tương lai.)


Cảm ơn đây hóa ra là vấn đề tôi đang gặp phải. Tiết kiệm cuộc sống!
JDawgg

1

Kiểm tra xem bạn có quyền vào thư mục hay không. Tôi vừa gặp phải điều này và đó là vì thư mục thuộc sở hữu của người dùng www-data không phải người dùng mà tôi đã đăng nhập vào thiết bị đầu cuối.


1

Trong trường hợp của tôi, đó là dấu gạch chéo trên đường dẫn của tôi gây ra sự cố ...

Không làm việc

/srv/bootstrap/

Công việc

srv/bootstrap/

1

Một điều nữa: nếu thư mục bạn đang ở yêu cầu quyền truy cập root để viết hoặc thực thi, hãy đảm bảo rằng bạn đang ở trên người dùng root. Tôi thực sự đã gặp một lỗi kỳ lạ khi tôi đang cố gắng thêm một mô-đun con và git liên tục phàn nàn rằng đường dẫn mà tôi đang nhân bản vào đang bị tệp git bỏ qua. Sau đó, tôi thay đổi thành người dùng root, chạy lại phần bổ sung mô-đun con và không có vấn đề gì.


0

Cũng vui lòng kiểm tra ~/.gitignore~/.gitignore_globalcái nào có thể được tạo bởi một số ứng dụng khách Git (ví dụ: Atlassian SourceTree trên Mac OS X).


0

Đảm bảo rằng .gitignoretệp không bỏ qua chính nó. Một lỗi phổ biến là thêm *quy tắc vào .gitignoretệp để bỏ qua mọi tệp trong thư mục hiện tại. Giải pháp cho điều này là thêm một ngoại lệ vào .gitignore:

*
!.gitignore

Bằng cách này, tất cả các tệp trong thư mục sẽ bị bỏ qua, ngoại trừ .gitignore.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.