Git додає всі підкаталоги


84

У мене проблеми з додаванням папки та всіх її підкаталогів до мого сховища git. Я зрозумів, що це дуже популярне запитання після того, як погуглив, і без жодної удачі перепробував кожну пропозицію, зокрема пропозицію зі сторінки користувача на git-add . Я навіть намагався git add -Aбез успіху. Для простоти скажімо, що я ініціалізував своє сховище git як Dir1. Тоді я маю таку структуру каталогів файлів.

Dir1/file1-1.txt
Dir1/file1-2.txt
Dir1/Dir2/file2-1.txt
Dir1/Dir2/Dir3/file3-1.txt

У моїх реальних файлах є підкаталоги, які охоплюють 5-6 рівнів, тож чи існує команда git, щоб додати всі файли в кожному підкаталозі до мого сховища? Зараз, коли я роблю пропозицію від людини сторінки git add Dir1/\*можна побачити Dir2в моєму репо, але він показує, як зелена папку , і я не можу відкрити його, що приводить мене до думки , що всі файли / папки Dir2не отримали додано. Будь-яка допомога буде вдячна. Я новий користувач git (менше тижня користування ним), тому намагайтеся тримати свої вказівки на рівні початківця.


2
git addбудь-якого каталогу автоматично рекурсивно. Використання git add .у верхньому рівні репо має додати все, що там є. Якщо цього не відбувається, він .gitignoreперебуває у програмі (локальній чи глобальній).
Nevik Rehnel

ти перевірив .gitignore? Якось, можливо, ваші каталоги ігноруються.
ogzd

2
який результат git status --ignored?
Хроніал

1
Просто, щоб допомогти іншим, хто бачить це питання, якщо у створених вами каталогах відсутні файли, вони не додаються. git add .Ви повинні додати якийсь файл у каталоги, щоб git їх відстежував.
gonephishing

Відповіді:


106

Робіть,

git add .

перебуваючи в корені сховища. Це все додасть. Якщо ви це зробите git add *, він додасть лише *точки до файлів . Крапка вказує на каталог.

Якщо ваш каталог або файл не було додано до git index / repo після вищезазначеної команди, не забудьте перевірити, чи позначено це як проігнороване git у файлі .gitignore .


8
Просто спробував це. Все ще не працює. Я зробив git add. git commit git push origin master Чи мені щось не вистачає?
Джош Бредлі

4
Припускаючи, що ваші файли перебувають під Dir1, вам слід зробити cd Dir1; git init; git add . ; git commit;Нічого іншого не потрібно. Якщо у вас є .gitignore, ігноруючи файли в якомусь каталозі, але все одно хочете їх додати, вам потрібно зробити це git add -f .замість git add ..
Калле Поккі,

5
Я спробував "git add." але це не спрацювало. Наступного дня я повернувся і спробував, і все "просто спрацювало", тож спасибі! Мабуть, це була одна з тих опівнічних помилок, які зникають, коли світло знову вмикається.
Джош Бредлі

2
git add. не працює і не рекурсивно додає підкаталоги та їх вміст.
Знає не багато

Можливо, вам доведеться відкрити нове вікно команд, щоб це працювало послідовно.
клітки


13

Ви також можете зіткнутися з проблемами, якщо сам підкаталог є сховищем git - тобто .має каталог .git - зверніться до ls -a.

Щоб видалити, перейдіть до підкаталогу та rm .git -rf.


2
На терміналі OSX 10.11.6 використовується: rm -rf .git
Sébastien

2
Те саме, чи не так?
PaulB

4

Також боровся, але правильно вводив текст

git add -f ./JS/*

де JS було моєю назвою папки, яка містить підпапки та файли


2
він може додавати проігноровані файли та робити безлад у сховищі.
changtung

git add ./JSє правильним використанням. Він додасть всі файли в каталог і всі підкаталоги, які все ще дбають про ігноровані файли.
Ремі Бенуа

1

Я не можу точно сказати, чи це так, але для мене проблемою виявилося наявність файлів .gitignore у деяких підкаталогах. Знову ж таки, я не можу цього гарантувати, але після видалення все працювало.


0

Швидше за все .gitignore файлу s при грі. Зауважте, що файли .gitignore можуть з’являтися не лише на кореневому рівні репозиторію, а й на будь-якому допоміжному рівні. Ви можете спробувати це з кореневого рівня, щоб знайти їх:

знайти. -name ".gitignore"

а потім вивчіть результати, щоб побачити, що може перешкоджати додаванню ваших піддиректорій.

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


0

Я бачив цю проблему раніше, коли назва папки (під), яку я намагався додати, починалася з "_Something_"

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

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