git add -A не добавляет все измененные файлы в каталоги - PullRequest
57 голосов
/ 11 октября 2011

Я хочу добавить все файлы, независимо от того, что они: удалены, созданы, изменены, не отслежены и т. Д.? Я просто не хочу, чтобы git добавил ALL мои файлы КАЖДЫЙ ВРЕМЯ . Я попытался git add -A, но НЕ добавляет измененные файлы в папки.

Вот мой начальный git status в моем проекте:

Rakib-MacBook-Pro:my-xcode-practice rakib$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   BankAccount (modified content, untracked content)
#   modified:   BuckysButtons (modified content, untracked content)
#   modified:   multiview (modified content, untracked content)
#   modified:   rotator (modified content, untracked content)
#   modified:   segmentedControls (modified content, untracked content)
#
no changes added to commit (use "git add" and/or "git commit -a")

Тогда я положу git add -A:

Rakib-MacBook-Pro:my-xcode-practice rakib$ git add -A

и вот новый статус ПОСЛЕ делает git add -A:

Rakib-MacBook-Pro:my-xcode-practice rakib$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   BankAccount (modified content, untracked content)
#   modified:   BuckysButtons (modified content, untracked content)
#   modified:   multiview (modified content, untracked content)
#   modified:   rotator (modified content, untracked content)
#   modified:   segmentedControls (modified content, untracked content)
#
no changes added to commit (use "git add" and/or "git commit -a")

Вы можете видеть, что в git status не было никаких изменений. Как мне это решить?

Я тоже попробовал git add . - не помогло

Я тоже пробовал git add * - не помогло

Ответы [ 9 ]

47 голосов
/ 11 октября 2011

Проблема в том, что BankAccount, BuckysButtons, multiview, rotator и segmentedControls - это все подмодули git, которые во многих отношениях действуют как независимые репозитории.

Если вы хотите запустить git add -A . в каждом подмодуле, вы можете сделать:

git submodule foreach --recursive git add -A .

И тогда вы можете создать коммит в каждом подмодуле с помощью:

git submodule foreach --recursive "git commit -m 'Committing in a submodule'"

(Если у вас нет других подмодулей, вложенных в эти подмодули, опция --recursive не нужна.)

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


Обновление: Из сообщения об ошибке, которое вы цитировали в комментариях ниже, видно, что вы добавили эти другие git-репозитории напрямую, а не как подмодули. Это может произойти, если вы скопируете другой репозиторий git в свой репозиторий, а затем просто используете git add для его постановки, а не добавляете его с git submodule add <REPOSITORY-URL>. Если вы действительно хотите сохранить их как подмодули, я бы предложил удалить их из вашего репозитория, зафиксировать их удаление, а затем добавить их должным образом как подмодули с git submodule add

27 голосов
/ 03 мая 2013

Я просто воссоздал это случайно.

Я скопировал свой проект в другой папке в мой новый репозиторий git.Я не собирался использовать его как подмодуль, я намеревался использовать его как отправную точку для нового проекта.Скопированный мною проект, который теперь являлся подпапкой моего основного репозитория git, содержал .git/.Удалить subfolder/.git/.

rm -rf subfolder/.git

Тогда все было странно ...

git status

Ничего не совершать.Хм ... Как насчет всех этих файлов?

Я действительно не знал, как исправить это с помощью git, поэтому я продублировал каталог и удалил оригинал.

cp subfolder newsubfolder    
rm -rf subfolder

Затем я добавил все измененные файлы, зафиксировал и отправил.

git add -A
git commit -am 'i did something and there are now files'
git push origin <branchName>
4 голосов
/ 20 февраля 2016

Я решил это, удалив папки .git внутри предполагаемых подмодулей и внутри корня проекта, а затем выполнил новый 'git init'

4 голосов
/ 29 октября 2013

Довольно простое исправление для меня - я открыл Git Bash в подкаталоге проекта.

Откройте Bash и, выполнив команды в корневом каталоге, исправите эту проблему; git add -A . работал как положено.

1 голос
/ 28 октября 2017

Эта ошибка возникает из-за того, что вы добавили папку, которая уже связана с каким-либо другим хранилищем github.

Чтобы решить эту проблему, сначала скопируйте файлы, которые вы хотите выгрузить на github, из папки BankAccount, а затем удалите папку BankAccount.

Теперь создайте новую папку и вставьте в нее файлы.

Это происходит из-за того, что подмодули git автоматически используются git, присутствующими в более ранней папке.Теперь вы можете сделать

git add . 
git status
0 голосов
/ 25 мая 2015

У меня была эта проблема, потому что я клонировал чей-то репозиторий в свой проект. Когда я его клонировал, в их проекте уже были папки / файлы .git и .gitignore. После удаления этих уже существующих файлов git и повторного запуска с git все работает нормально.

0 голосов
/ 20 мая 2015

Последние два дня у меня была эта проблема с BitBucket.Я работаю над проектом, который отслеживается в его репозитории Visual Studio 2013 Community Edition.

Однако я иногда использовал Git Bash для выполнения коммитов вручную, и тогда все начинало работать не так, а файлы простоБыть игнорированным.Пытался отложить репо, но это не помогло.

Наконец-то я обнаружил, что если вы зайдете в Visual Studio> Team Explorer> нажмите на Sync, Visual Studio выполнит извлечение, а затем зафиксирует и отправит все неотслеживаемые файлы..

Вы можете сделать то же самое вручную через Git Bash, если вам нравится консоль, как я.

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 05 марта 2014

У меня была похожая проблема в Windows, где я git add --all оставил некоторые файлы без отслеживания, проблема была в том, что было несколько файлов с разными корпусами 'test.php' и 'Test.php', так что git отслеживал Test.php, а не в нижнем регистреверсия этого.

Это может помочь кому-то в будущем и избавить от царапин на голове.

0 голосов
/ 11 октября 2011

Давайте процитируем документацию для -A:

       -A, --all
       Like -u, but match <filepattern> against files in the working tree in addition to the
       index. That means that it will find new files as well as staging modified content and
       removing files that are no longer in the working tree.

Обратите внимание на критическое слово: <filepattern>.Вам нужно дать ему шаблон, который рекурсивно соответствует всему вашему дереву.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...