2012-05-25 35 views
12

Tôi có một repo nhân bản. Có một thư mục, gọi nó là a/b/c rằng từng là repo riêng của nó, tức là có/b/c/.git/etc.git bỏ qua một thư mục, nó giống như nó không tồn tại

Bây giờ tôi muốn các tệp được quản lý trong repo chính. Tôi không quan tâm đến lịch sử trong a/b/c, vì vậy tôi đã xóa thư mục .git trong a/b/c

Nhưng vấn đề là git status bỏ qua a/b/c hoàn toàn. Tôi không thể git add. Nó như thể tôi đã đặt con đường vào .gitignore (tôi không có).

Rõ ràng trước đây, nó có ý nghĩa cho git bỏ qua một thư mục con với một thư mục .git trong đó, nhưng bây giờ làm thế nào để nó biết sự khác biệt?

Có nơi nào khác bỏ qua các tệp được liệt kê không phải là .gitignore và .git/info/exclude không? Không có gì trong tệp .git/config?

Tôi đã được hỏi trạng thái git nói gì. Không nhiều:

/path/to/root/dir $ git status 
# On branch fred 
nothing to commit (working directory clean) 

Và những gì git thêm nói. Thậm chí ít hơn (không có gì)

/path/to/root/dir $ git add a/b/c 
+0

bạn đã kiểm tra các tập tin .gitignore trong thư mục cấp cao hơn? – jonathanbell

+0

có, nó không có gì ở trong đó mà sẽ phù hợp với con đường. – artfulrobot

+0

thông điệp là gì bạn nhận được khi bạn 'git add'? Hiện trạng' git' hiển thị chính xác là gì? –

Trả lời

17

Tôi không có ý tưởng những gì vấn đề là hoặc làm thế nào nó nảy sinh, nhưng đây là cách tôi cố định nó, trong trường hợp bất cứ ai khác bị mắc kẹt:

git rm --cached a/b/c 
git commit -m "removed phantom a/b/c dir" 
git add a/b/c 
git commit -m "finally able to add a/b/c" 

Điều thú vị git log a/b/c chỉ liệt kê cam kết "cuối cùng có thể ...". git show HEAD^ (các "loại bỏ ma ..." cam kết nói

-Subproject commit c311ccdc91c8be66019aa138d1c4af49a6b7a81c 

Vì vậy, có vẻ như nó đã được điều trị nó đặc biệt một số như thế nào. Tôi sẽ phải đọc lên nhiều hơn về các tiểu dự án và/hoặc submodules.

+0

Âm thanh như có/là một cái gì đó trong Chỉ mục, độc lập với bất kỳ tệp .gitmodules nào bị thiếu trong dự án siêu, tin rằng thư mục là một mô-đun con được theo dõi. Nó sẽ rất hữu ích để khám phá lý do tại sao. –

+0

đã đồng ý! Bí ẩn với tôi. – artfulrobot

+0

Kiểm tra một .gitmodules trong repo trên. Các tập tin nên liệt kê tất cả các submodules mà repo nghĩ rằng nó có (bao gồm cả một trong những bạn đã xóa ;-) –

2

Bạn có tệp gitignore toàn cầu không? (. V gây phiền nhiễu) (Kiểm tra với git config core.excludesfile)

+1

không. Lệnh đó không trả về kết quả đầu ra. – artfulrobot

0

Sử dụng git add -f để buộc git để thêm các tập tin nó hiện đang bỏ qua.

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