Рекурсивно додайте всю папку до сховища


250

Я намагаюся додати гілку до головної гілки на GitHub і натиснути папку на цю гілку.

Структура папки гілки виглядає так: SocialApp / SourceCode / DevTrunk / SocialApp і всі файли вихідного коду знаходяться в останній папці.

Я використовую такі команди Git:

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

Це натискає на GitHub лише першу папку "SocialApp" і ігнорує папку SourceCode, яка знаходиться всередині папки. Як це виправити?


4
чи є файли десь? їх не ігнорують .gitignore?
CharlesB

This is pushing only the first folder- git зовсім не переймається папками, лише файлами. будь ласка, покажіть команду - ви або вчинили підмодуль, символьне посилання або щось інше, що не папка
AD7six

У мене є ця сама проблема. Я не думаю, що це проблема, а лише очікувана поведінка. Дивно, що існує так багато рішень.

Примітка: коли ваші папки порожні, вони не відстежуються. є гарною практикою поміщати порожній файл .keep, щоб зберегти порожні каталоги
Чувак,

Відповіді:


356

Перевірте .gitignoreфайл, якщо підкаталог ігнорується.

Потім спробуйте ще раз

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

4
Зауважте, що це не буде включати файли, згадані в .gitignore. Я зазвичай додаю ті вручну або використовувати пакетний файл , як це: for /R %%f in (*.*) do git add --force %%f(див bitbucket.org/jeroenp/besharp.net/src/tip/Scripts/GIT / ... )
Йерун Wiert Pluimers

10
Щоб рекурсивно додати всю структуру дерева папки, команда повинна бутиgit add --all :/
Jason Hartley

7
@JeroenWiertPluimers git add -f -allпрацює над тим, щоб додати .gitignored файли
Orwellophile

3
@JasonHartley Ваш коментар може бути відповіддю. Дякую!
ShutUpMagda

4
Чи не додає це нестандартні файли в git repo, а не лише поточну папку? Я не думаю, що це запитання оригінальне.
Тед

31

Це працювало для мене:

git add . --force

1
Інші відповіді вимагають обчислювати список файлів як аргумент команди, цей - ні, отже, кращий вибір.
topkara

3
Однозначно найкраща відповідь. Однією редакцією було б зазначити, що вам не потрібно, --forceякщо ви хочете, щоб ігнори все ще дотримувалися.
GrafikRobot

31

SETUP - локальний сховище на локальному сервері - клієнт підключається до локального сервера через локальну мережу

git add foldername/\\*

Щоб перейти на сервер ...

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

Здебільшого, користувачі будуть призначати ім'я віддаленого сервера як джерело ...

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

9
Помилка як fatal: pathspec 'foldername/\\*' did not match any files. Працював як git add foldername/\*.
Тпойка

Яка різниця між git add foldername/\\*і git add --all?
Данієль

17

І "git add *", і "git add SocialApp", викликані з верхнього каталогу, повинні додавати рекурсивно всі каталоги.

Можливо, у вас немає файлів у SocialApp / SourceCode / DevTrunk / SocialApp, і це є причиною.

Спробуйте зателефонувати "торкніться SocialApp / SourceCode / DevTrunk / SocialApp / .temporary" (і перевірте .gitignore), а потім спробуйте додати git знову.


2
Я не думаю, що я використовую git add * і маю те саме питання.

16

У моєму випадку в підкаталозі була папка .git, тому що я раніше ініціалізував git repo там. Коли я додав підкаталог, він просто додав його як підпроект, не додаючи жодного з файлів, що містяться.

Я вирішив проблему, видаливши сховище git із підкаталогу, а потім повторно додавши папку.


Це вирішило це для мене. Я також повинен був перейменувати саму папку, щоб виправити.
Тотем

6

Я просто використав це:

git add app/src/release/*

Вам просто потрібно вказати папку, яку потрібно додати, а потім використовувати, *щоб додати все, що знаходиться всередині рекурсивно.


5

Я зіткнувся з цією проблемою, яка коштувала мені трохи часу, а потім згадала, що git не зберігатиме порожні папки. Пам'ятайте, що якщо у вас є дерево папок, яке ви хочете зберегти, помістіть файл у принаймні найглибшу папку цього дерева, щось на зразок файлу під назвою ".gitkeep", аби це вплинуло на зберігання git.


5

Якщо ви хочете додати каталог та всі файли, які знаходяться всередині нього, рекурсивно, перейдіть до каталогу, де знаходиться каталог, який ви хочете додати.

$ cd directory
$ git add directoryname

1
CD-каталог git add *
Франсуа Річард

3

У мене також був такий самий випуск, і у мене немає файлу .gitignore. Мою проблему вирішили наступним чином. Це займало всі підкаталоги та файли.

git add <directory>/*

1

Бувають випадки, коли я хочу включити свої вихідні коди веб-служб разом із проектом на стороні клієнта. Вони мають окремі сховища git. Я фактично використовую для додавання всіх файлів за допомогою команди:

git add -A

Але чомусь він лише додає папку. Пізніше я дізнався, що файли сервера також мають свої.git папку, щоб команда не працювала.

tl; dr : Переконайтеся, що .gitв папці, яку ви хочете налаштувати, немає папки.


1
Як можна обійти це, якщо ви не хочете видалити папки .git?
котиться

@rolls бачать підмодулі git
mr5

1

Перейдіть до папки, у якій є ваші файли,
якщо ви знаходитесь на машині Windows, вам потрібно буде запустити git bash, з якого ви отримаєте інтерфейс командного рядка, а потім скористайтеся цими командами

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

якщо ви внесете будь-які зміни у файли, перш ніж об'єднати їх з головним, вам доведеться зробити зміни, виконавши

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

Після цього замовте відділення до головного відділення


Єдина відповідь, що згадуєтьсяinit
Атул

1

Сценарій / Рішення 1:
Переконайтеся, що ваш Folder/ Sub-folderне є у .gitignoreфайлі, випадково.


Сценарій / рішення 2:
за замовчуванням git add .працює рекурсивно.


Сценарій / рішення 3:
git add --all :/ працює гладко, де git add .не працює (працює).
(Коментар @ JasonHartley)


Сценарій / рішення 4:
Додано питання, з яким я особисто стикався Subfolders or Files, які були спільними для кількох Folders.

Наприклад:
Folder/Subfolder-L1/Subfolder-L2/...file12.txt
Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.txt
Folder/Subfolder-L1/...file1.txt

Тож Gitрекомендував мені додати git submodule, що я намагався, але був біль.


Нарешті, для мене працювало:

1. git addодин файл, який знаходиться в останньому кінці / рівні а Folder.
Наприклад:
git add Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.txt

2. git add --all :/зараз.
Це дуже швидко додасть усі Folders, Subfoldersі files.



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.