không thể thêm thư mục trong git


21

Tôi thêm thư mục mới (thực sự tôi đã nhân bản nó từ một repo khác và quên điều đó), sau đó tôi đã thực hiện một số thay đổi ở đó. Ngoài ra, tôi đã thực hiện rất nhiều thay đổi ở những nơi khác, khi tôi cố gắng thực hiện thêm git

# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   protected/ext/SpecificFolder (modified content)
#

Sau đó, tôi nhớ rằng có thể có thư mục .git (vì trước đây tôi đã git clone ở đó). Tôi đã đi đến thư mục đó và loại bỏ các tệp không cần thiết (thư mục) và thư mục .git. Tôi kiểm tra tình trạng git, không có gì lạ. Sau đó cam kết và kiểm tra đến một chi nhánh khác và đột nhiên tôi nhận ra rằng thư mục này không được thêm vào lần xác nhận cuối cùng. Trên thực tế thư mục đã được thêm nhưng các tập tin bên trong đã bị bỏ qua. Bây giờ ngay cả khi tôi đang cố gắng làm git addcho thư mục đó, không có gì xảy ra và git statuskhông hiển thị bất kỳ thay đổi nào :(

Tôi có thể làm gì ?


6
Trong trường hợp bất kỳ ai khác kết thúc trên trang này với vấn đề tôi gặp phải: Tôi không thể thêm tệp trong thư mục con vào Git. Sau đó tôi thấy rằng thư mục con đó có .gitkho lưu trữ riêng và các tệp đang được thêm vào kho lưu trữ đó thay vì kho lưu trữ trong thư mục chính. Ngay cả trong GUI Git, thư mục con đó đã xuất hiện dưới dạng tệp thay vì dưới dạng thư mục.
Nav

Câu trả lời:


29

Git không theo dõi thư mục; nhưng chỉ là các tập tin trong đó.

Có vẻ như bạn có thể có một mô hình bỏ qua gây ra addkhông làm gì cả. Bạn có thể xem các tập tin bị bỏ qua với git status --ignored; sau đó họ có thể được theo dõi vớigit add --force protected/ext/SpecificFolder


1
Không, nó không được cài đặt sẵn git status --ignored, bằng cách nào đó tôi nghĩ rằng nó được kết nối với mô hình con
user1016265

1
Lệnh này là một cứu người. Không có nó, tôi sẽ không bao giờ tìm ra thư mục nào bị bỏ qua.
IgorGanapolsky

wow ..... Tôi cảm thấy hoàn toàn ngu ngốc khi đọc sự thật này sau khi sử dụng git một thời gian bây giờ ^^
XandruCea

1
Aha, cuối cùng. Đây là vấn đề của tôi. Tôi đã sao chép .gitignore từ cha mẹ và thành các mô hình con. Tôi đã bỏ qua 'config /' và sau đó tôi đã tạo một thư mục theo thư mục nguồn có tên config. Không thể thêm nguồn. Vấn đề đã được giải quyết ngay bây giờ, cảm ơn bạn :-)
Avec

7

Git không theo dõi các thư mục EMPTY. Nếu bạn có một dự án với nhiều lớp thư mục con, git thực tế sẽ theo dõi các thư mục w / file trong đó. Nếu không, thì nó sẽ là một kho lưu trữ tệp phẳng.


Wow đây là một điều đơn giản nhưng chết tiệt. Tôi đã đọc nó và nói "Ôi Chúa ơi, chính xác là như vậy"
Brian nói Phục hồi lại

3

Tôi tình cờ làm chính xác những gì người dùng này đã làm: Thêm một kho git hiện có bên trong một kho khác.

Triệu chứng là git đã nhận ra thư mục đó là một tệp và do đó không thể thêm các tệp của thư mục.

Để giải quyết câu hỏi đó, tôi đã xóa .gitthư mục trong thư mục, di chuyển thư mục đó trong thư mục khác, xóa chỉ mục, xóa thư mục trong repo của tôi và sau đó tôi có thể thêm thư mục chính xác.

Đạo đức của việc này là: không thêm kho lưu trữ bên trong kho khác.


5
Nó cũng có thể được sửa bằng cách chạygit rm --cached path_to_submodule
Victor Marchuk


0

Hãy thử thêm một tập tin trong thư mục đó.

$ git add my-dir/index.html

Nếu bạn thấy một đầu ra như dưới đây:

The following paths are ignored by one of your .gitignore files:
my-dir/index.html
Use -f if you really want to add them.
fatal: no files added

Có một quy tắc trong một trong những gitignores của bạn ngăn bạn thêm thư mục đó.


0

Tôi đã tìm thấy các tác dụng phụ tương tự sau khi cố gắng chuyển đổi những gì từng là một mô hình con thành một thư mục con bình thường.

Thêm lại thư mục mà tôi đang cố chuyển đổi dường như hoạt động, nhưng hóa ra các tệp bên trong nó không thực sự được thêm vào.

Cố gắng đặc biệt thêm một tập tin bên trong nó cho tôi một cảnh báo tốt hơn

git add sites/all/modules/contrib/transclusion/transclusion.module 
fatal: Pathspec 'sites/all/modules/contrib/transclusion/transclusion.module' is in submodule 'sites/all/modules/contrib/transclusion'
  • Vì vậy, nó có liên quan đến cách tôi đã cố gắng loại bỏ mô hình con cũ, vì không có quy trình được chứng minh bằng văn bản để thực hiện đúng. - Tôi vừa xóa nó khỏi .gitmodules. Những thứ khác thực sự cần thiết để dựng lên bóng của mô hình con.
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.