2013-07-19 27 views
162

Tôi đang cố gắng thêm chi nhánh vào nhánh chính trên GitHub và đẩy một thư mục vào nhánh đó.Đệ quy thêm toàn bộ thư mục vào kho lưu trữ

Cấu trúc thư mục của chi nhánh trông giống như - SocialApp/SourceCode/DevTrunk/SocialApp và tất cả các tệp mã nguồn nằm trong thư mục cuối cùng.

Tôi đang sử dụng git lệnh sau:

git add * 
git commit -m with the message 
git push 

này đang đẩy chỉ thư mục đầu tiên "SocialApp" lên GitHub và bỏ qua các thư mục mã nguồn có nghĩa là bên trong thư mục. Làm thế nào để sửa lỗi này?

+4

có tệp ở đâu không? họ không bị bỏ qua trong '.gitignore'? – CharlesB

+0

'Đây chỉ là thư mục đầu tiên' - git không quan tâm đến tất cả các thư mục, chỉ các tệp.xin vui lòng cho thấy cam kết - bạn đã cam kết một submodule, một symlink hoặc cái gì khác mà không phải là một thư mục – AD7six

+0

Tôi đang gặp vấn đề này. Tôi không nghĩ rằng đây là một vấn đề nhưng chỉ là hành vi mong đợi. Đáng ngạc nhiên có rất nhiều giải pháp. –

Trả lời

258

Kiểm tra tệp .gitignore, nếu thư mục phụ bị bỏ qua.

Sau đó thử lại

git add --all 
git commit -am "<commit message>" 
git push 
+4

Lưu ý rằng điều này sẽ không bao gồm các tệp được đề cập trong .gitignore. Tôi thường thêm chúng bằng tay hoặc sử dụng một tập tin batch như thế này: 'for/R %% f in (*. *) Làm git add --force %% f' (xem https://bitbucket.org/jeroenp/besharp .net/src/tip/Scripts/GIT/git-add-force-all-files-đệ quy-từ-current-directory.bat) –

+6

Để đệ quy thêm toàn bộ cấu trúc cây của thư mục, lệnh sẽ là 'git add --all:/' –

+2

@JeroenWiertPluimers' git add -f -all' hoạt động để thêm các tệp .gitignored – Orwellophile

14

Cả "git add *" và "git add SocialApp" được gọi từ thư mục trên cùng nên thêm đệ quy tất cả các thư mục.

Có thể bạn không có tệp nào trong SocialApp/SourceCode/DevTrunk/SocialApp và đây là lý do.

Cố gắng gọi "chạm vào SocialApp/SourceCode/DevTrunk/SocialApp/.temporary" (và kiểm tra .gitignore) và sau đó thử git thêm lần nữa.

+1

Tôi không nghĩ như vậy, tôi sử dụng git add * và có cùng một vấn đề. –

+0

'' git add * '' làm việc cho tôi – Shadow

23

SETUP - kho địa phương tại một máy chủ địa phương - khách hàng được kết nối đến máy chủ địa phương thông qua mạng LAN

git add foldername/\\* 

Để làm cho nó đến máy chủ ...

git commit -m "comments..." 
git push remote_server_name master 

Chủ yếu, người dùng sẽ chỉ định remote_server_name như nguồn gốc ...

git remote add remote_server_name [email protected]_server_ip:/path/to/git_repo 
+0

Không thành công dưới dạng tên người dùng 'fatal: pathspec '/ \\ *' không khớp với bất kỳ tệp nào'. Làm việc như 'git add foldername/\ *'. – Tpojka

13

này đã làm việc cho tôi:

git add . --force 
+0

hoạt động trong POSH Git – Baldy

+0

Đây là câu trả lời đúng, không git thêm * – Ted

+0

Các câu trả lời khác yêu cầu danh sách tệp được tính làm đối số cho lệnh, điều này không, do đó là lựa chọn tốt hơn. – topkara

3

Tôi chạy vào vấn đề này mà chi phí cho tôi một chút thời gian, sau đó nhớ ra rằng git sẽ không lưu trữ thư mục rỗng. Hãy nhớ rằng nếu bạn có một cây thư mục mà bạn muốn lưu trữ, hãy đặt một tệp trong ít nhất thư mục sâu nhất của cây đó, giống như một tệp có tên ".gitkeep", chỉ để ảnh hưởng đến việc lưu trữ bởi git.

8

Trong trường hợp của tôi, có một thư mục .git trong thư mục con vì trước đó tôi đã khởi tạo một repo git ở đó. Khi tôi thêm thư mục con nó chỉ đơn giản là thêm nó như là một tiểu dự án mà không cần thêm bất kỳ tập tin chứa.

Tôi đã giải quyết vấn đề bằng cách xóa kho git khỏi thư mục con và sau đó thêm lại thư mục.

+0

Điều này giải quyết nó cho tôi. Tôi cũng đã phải đổi tên thư mục cho bản sửa lỗi để khởi động. – Totem

4

Nếu bạn muốn thêm thư mục và tất cả các tệp được đặt bên trong thư mục đó, hãy chuyển đến thư mục chứa thư mục bạn muốn thêm.

$ cd directory 
$ git add directoryname 
Các vấn đề liên quan