2011-07-08 54 views
21

git phiên bản 1.7.4.1Không thể xem các tệp mới được thêm vào thư mục làm việc git của tôi

Tôi đang sử dụng git trên Ubuntu.

Tôi đã sao chép một số tệp từ thư mục khác vào thư mục làm việc git của tôi. Thông thường sẽ xuất hiện dưới Untracked files. Tuy nhiên, chúng không xuất hiện. Vì vậy, tôi không thể thêm chúng.

Khi tôi thực hiện git status các tệp mới sẽ không được hiển thị.

Tôi đã cố thêm chúng bằng cách thực hiện git add source.c rồi thử git status. Tệp không được hiển thị.

Vì vậy, tôi đã mở tệp và đã làm một tên là save as. trạng thái git vẫn không thấy được tệp.

Tôi đã thực hiện một git ls-files và các tệp mới được hiển thị ok.

Tôi đã kiểm tra quyền của tệp và chúng giống với tất cả các tệp hiện tại trong thư mục git của tôi.

Tôi chưa từng gặp vấn đề này trước đây.

Rất cám ơn cho bất cứ đề nghị,

+3

nội dung của git của bạn bỏ qua là gì? và tệp nào không hiển thị? – drewag

+1

Bạn có bất kỳ tệp bỏ qua nào trong repo không? – W55tKQbuRu28Q4xv

+0

Bạn nên kiểm tra git của bạn bỏ qua, và có lẽ nâng cấp lên phiên bản mới nhất (1.7.6) – shelhamer

Trả lời

35

Nếu git ls-files hiển thị source.c, thì nó phải có trong chỉ mục. Điều này có nghĩa là nó đã được theo dõi và có thể đã được cam kết. Nếu source.c không hiển thị ở số git status thì tất cả tệp phải được cam kết.

Hãy thử sửa đổi tệp để xem tệp có hiển thị là đã sửa đổi trong git status hay không. Để thực sự thuyết phục bản thân rằng tệp đã được đăng ký, hãy chạy git cat-file -p HEAD:source.c để xem nội dung của tệp đã đăng ký (xem git help revisions để biết tài liệu về cú pháp HEAD:source.c).

Bên cạnh đó, một hoặc nhiều điều sau đây có thể đúng:

  • Các tập tin đã được sửa đổi, nhưng 'giả định không thay đổi' bit được thiết lập trong chỉ mục. Hãy xem kết quả của git ls-files -v source.c. Nếu cột đầu tiên là một chữ thường, thì bit 'giả định không thay đổi' được thiết lập. Điều này sẽ ngăn mọi thay đổi hiển thị trong git status. Bạn có thể tắt bit 'giả định không thay đổi' bằng cách chạy git update-index --no-assume-unchanged source.c.
  • Tệp đã được sửa đổi nhưng bit 'bỏ qua công việc' được đặt trong chỉ mục. Nếu cột đầu tiên của đầu ra là git ls-files -v source.cs hoặc S thì bit 'skip-worktree' được đặt.Bạn có thể tắt bit 'skip-worktree' bằng cách chạy git update-index --no-skip-worktree source.c.
  • Chỉ mục của bạn bị hỏng. Thử xóa .git/index (Git sẽ tạo lại khi cần thiết).
  • Sự cố về hệ thống tệp đang ngăn không cho stat() hoạt động bình thường. Hãy thử chạy git update-index --really-refresh. Nếu thư mục làm việc của bạn là trên một ổ đĩa mạng (NFS, sshfs, vv) hãy thử di chuyển kho lưu trữ của bạn đến một ổ đĩa cục bộ.
+0

Tôi có cùng một vấn đề. Hai điểm đầu tiên không áp dụng cho tôi vì cột đầu tiên hiển thị 'H'. Tôi đã xóa '.git/index'; 'git status' hiện hiển thị các tệp được theo dõi, nhưng tất cả chúng đều hiển thị như đã xóa mặc dù tất cả các tệp tồn tại. Tôi đã thử 'git update-index --really-refresh' không có kết quả. –

+0

Tôi đã sử dụng 'git reset' và bây giờ' git status' quay lại không hiển thị các tệp được theo dõi của tôi - vấn đề ban đầu. –

+1

@Fractal: Nếu 'git status' không hiển thị các tệp, nhưng' git ls-files -v' hiển thị 'H', thì tệp đã được cam kết và chưa được sửa đổi vì nó đã được cam kết. Điều này là bình thường - 'trạng thái git' chỉ hiển thị sai lệch so với bình thường (tệp không được theo dõi, tệp đã được sửa đổi kể từ khi được dàn dựng/cam kết, các tệp đã được dàn dựng nhưng chưa được cam kết). –

12

Đây thực sự là một xô trong bóng tối, nhưng tôi đã thỉnh thoảng có vấn đề tương tự và nó đã được một trường hợp của một trong những:

  • Bạn có một quy tắc trong .gitignore mà bỏ qua các tập tin
  • bạn có một .git dir trong một trong các thư mục bạn đã sao chép
+0

Không có gì trong .gitignore. Các tệp là * .c tệp nguồn. Và tôi có nhiều người trong số họ rằng tôi đang làm việc trên chương trình đó ok. Tôi chỉ sao chép các tập tin và không có gì khác. Cảm ơn. – ant2009

+2

Lưu ý rằng '.git/info/exclude' và tệp được tham chiếu bởi biến cấu hình' core.excludesfile' cũng có thể chứa các quy tắc bỏ qua. Tuy nhiên, tôi tin rằng Git in một thông báo "tệp của bạn không được thêm bởi vì nó bị bỏ qua" thân thiện khi chạy 'git add' nếu đó là một vấn đề bỏ qua, có nghĩa là nó có thể không phải là một vấn đề bỏ qua. –

+2

+1 quy tắc '.gitignore' đã chuyển tôi. Tôi đã sao chép một tệp vào thư mục xây dựng, vì vậy nó hoạt động chính xác khi được xây dựng, nhưng không xuất hiện ở bất kỳ đâu trong trạng thái. –

20

Thật khó để nói có gì sai từ những thông tin g iven, tuy nhiên như một cách giải quyết, bạn có thể thử git add -f filename.c. Điều này sẽ thêm tập tin ngay cả khi nó sẽ được bỏ qua.

2

Có thể ứng dụng của bên thứ ba đã cập nhật tệp "gitignore_global.txt" (~/.gitignore_global trên Linux/OS X) của bạn. Điều đó làm tôi rất vui. Tôi đã cài đặt "Cây nguồn" và thông báo sau khi git không theo dõi các tệp mới. Nó phát hiện ra rằng "Cây nguồn" đã thay đổi "gitignore_global.txt" và thêm một vài phần mở rộng để không theo dõi. Cố gắng xác định vị trí tệp này và xem liệu có phần mở rộng của tệp nào không có ở đó

0

Xóa tệp .git/index. Khá một lỗi bực bội mà tôi dường như tiếp xúc khi tôi sao chép các mô-đun bộ xương vào dự án zf2 của tôi.

4

Tôi đã tạo một gói kết thúc bằng image.gen có thư mục tương ứng kết thúc bằng hình ảnh/gen. Và có một mục nhập .gitignore, cụ thể cho gen Android /.

Điều này dẫn đến tệp không được thêm vào git/hiển thị trong trạng thái git.

Kiểm tra bên dưới, nó giúp tôi giải quyết vấn đề.


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

Trong ví dụ:

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

Chi tiết sản lượng trên về mô hình 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, nhưng toàn bộ thư mục.

Định dạng quay trở lại là:

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

Hoặc sử dụng lệnh sau để in .gitignore của bạn trong sử dụng và repo thư mục:

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

Hoặc sử dụng git add -f mà cho phép thêm các tập tin bằng cách khác bỏ qua.

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

https://stackoverflow.com/a/28918909/4082503

0

Tôi gặp vấn đề tương tự. Git không hiển thị bất kỳ tệp mới nào được thêm vào dự án của tôi.

Tôi bị gây ra bởi những điều sau đây: Bằng cách nào đó thư mục chính của dự án của tôi đã được thêm vào "Danh sách bỏ qua cụ thể của kho lưu trữ" (đó là những gì được gọi trong SourceTree). Đây là tệp “.gitignore” trong thư mục chính của dự án của tôi.

Nó hoạt động sau khi tôi đã xóa tên thư mục trong tệp ".gitignore".

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