Thêm đệ quy toàn bộ thư mục vào kho lưu trữ


250

Tôi đang cố gắng thêm một nhánh vào nhánh chính trên GitHub và đẩy một thư mục lên nhánh đó.

Cấu trúc thư mục của 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 các lệnh Git sau:

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

Điều này chỉ đẩy thư mục đầu tiên "SocialApp" lên GitHub và bỏ qua thư mục SourceCode nằm trong thư mục. Làm thế nào để tôi sửa lỗi này?


4
Có tập tin ở bất cứ đâu? Họ không bỏ qua .gitignore?
CharlesB

This is pushing only the first folder- git hoàn toàn không quan tâm đến các thư mục, chỉ các tệp. vui lòng hiển thị cam kết - bạn đã cam kết một mô hình con, liên kết tượng trưng hoặc thứ gì đó không phải là thư mục
AD7six

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

lưu ý: khi thư mục của bạn trống, chúng không được theo dõi. Cách tốt nhất là đặt một tệp .keep trống vào đó để giữ các thư mục trống
Dude

Câu trả lời:


356

Kiểm tra .gitignoretệp, nếu thư mục con 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 bó như thế này: for /R %%f in (*.*) do git add --force %%f(xem bitbucket.org/jeroenp/besharp.net/src/tip/Scripts/GIT/iêu )
Jeroen Wiert Pluimers

10
Để thêm đệ quy toàn bộ cấu trúc cây của thư mục, lệnh phải làgit add --all :/
Jason Hartley

7
@JeroenWiertPluimers git add -f -allhoạt động để thêm các tệp .gitignored
Orwellophile

3
@JasonHartley Nhận xét của bạn có thể là một câu trả lời. Cảm ơn!
ShutUpMagda

4
Điều này không thêm tất cả các tệp không được sắp xếp trong repo git, không chỉ thư mục hiện tại? Tôi không nghĩ đó là những gì câu hỏi ban đầu đang hỏi.
Ted

31

Điều này làm việc cho tôi:

git add . --force

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

3
Chắc chắn là câu trả lời tốt nhất .. Một chỉnh sửa sẽ là đề cập rằng bạn không cần --forcenếu bạn muốn bỏ qua vẫn được tôn trọng.
GrafikRobot

31

SETUP - kho lưu trữ cục bộ tại một máy chủ cục bộ - máy khách được kết nối với máy chủ cục bộ qua mạng LAN

git add foldername/\\*

Để đưa nó đến máy chủ ...

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

Hầu hết, người dùng sẽ gán remote_server_name làm nguồn gốc ...

git remote add remote_server_name username@git_server_ip:/path/to/git_repo

9
Thất bại như fatal: pathspec 'foldername/\\*' did not match any files. Làm việc như git add foldername/\*.
Tpojka

Sự khác biệt giữa git add foldername/\\*và là git add --allgì?
Danijel

17

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

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

Hãy thử gọi "chạm vào SocialApp / SourceCode / DevTrunk / SocialApp / .t tạm thời" (và kiểm tra .gitignore) và sau đó thử git add lại.


2
Tôi không nghĩ vậy, tôi sử dụng git add * và đang gặp vấn đề tương tự.

16

Trong trường hợp của tôi, có một thư mục .git trong thư mục con vì trước đây tôi đã khởi tạo một repo git ở đó. Khi tôi thêm thư mục con, nó chỉ cần thêm nó dưới dạng một tiểu dự án mà không cần thêm bất kỳ tệp nào được 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.


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

6

Tôi chỉ đơn giản là sử dụng điều này:

git add app/src/release/*

Bạn chỉ cần chỉ định thư mục để thêm và sau đó sử dụng *để thêm mọi thứ bên trong đệ quy.


5

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


5

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

$ cd directory
$ git add directoryname

1
thư mục cd git add *
François Richard

3

Tôi cũng gặp vấn đề tương tự và tôi không có tệp .gitignore. Vấn đề của tôi đã được giải quyết theo cách sau. Điều này đã lấy tất cả các thư mục con và tập tin.

git add <directory>/*

1

Đôi khi tôi muốn bao gồm các mã nguồn dịch vụ web của mình cùng với dự án phía máy khách của nó. Cả hai đều có một kho git riêng. Tôi thực sự được sử dụng để thêm tất cả các tệp bằng cách sử dụng lệnh:

git add -A

Nhưng vì một số lý do, nó chỉ thêm thư mục. Sau này tôi phát hiện ra rằng các tập tin máy chủ cũng có .gitthư mục của nó trong đó nên lệnh không hoạt động.

tl; dr : Đảm bảo không có .gitthư mục nào trong thư mục bạn muốn tạo.


1
Làm thế nào bạn có thể khắc phục điều này nếu bạn không muốn xóa các thư mục .git?
cuộn

@rolls xem các mô hình con git
mr5

1

Điều hướng đến thư mục nơi bạn có tệp của mình
nếu bạn đang ở trên máy Windows, bạn sẽ cần bắt đầu git bash từ đó bạn sẽ nhận được giao diện dòng lệnh sau đó sử dụng các lệnh này

git init   //this initializes a .git  repository in your working directory

git remote add origin <URL_TO_YOUR_REPO.git> // this points to correct repository where files will be uploaded

git add *   // this adds all the files to the initialialized git repository

nếu bạn thực hiện bất kỳ thay đổi nào đối với các tệp trước khi hợp nhất tệp đó với bản gốc, bạn phải thực hiện các thay đổi bằng cách thực hiện

git commit -m "applied some changes to the branch"

Sau khi kiểm tra chi nhánh này đến chi nhánh chính


Chỉ trả lời đề cập đóinit
Atul

1

Kịch bản / Giải pháp 1:
Đảm bảo Folder/ Sub-folderkhông có trong .gitignoretệp, trong mọi trường hợp.


Kịch bản / Giải pháp 2:
Theo mặc định, git add .hoạt động đệ quy.


Kịch bản / Giải pháp 3:
git add --all :/ hoạt động trơn tru, trong git add .đó không (hoạt động).
(@ Nhận xét của JasonHartley)


Kịch bản / Giải pháp 4:
Vấn đề cá nhân tôi gặp phải là thêm Subfolders or Files, vấn đề phổ biến giữa nhiều ngườiFolders .

Ví dụ:
Folder/Subfolder-L1/Subfolder-L2/...file12.txt
Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.txt
Folder/Subfolder-L1/...file1.txt

Vì vậy, Gitđã giới thiệu tôi để thêm git submodule, mà tôi đã cố gắng nhưng là một nỗi đau.


Cuối cùng, những gì làm việc cho tôi là:

1. git addmột tập tin ở cuối / cấp cuối cùng của a Folder.
Ví dụ:
git add Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.txt

2. git add --all :/bây giờ.
Nó sẽ rất nhanh chóng thêm tất cả Folders, Subfoldersfiles.



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.