it-swarm.com.ru

git add -A не добавляет все измененные файлы в каталоги

Я хочу добавить все файлы независимо от того, что они: удалены, созданы, изменены, не отслежены и т.д.? Я просто не хочу добавлять мерзавцы ВСЕ мои файлы КАЖДЫЙ РАЗ. Я попытался 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 * - не помогло

57
Syed Rakib Al Hasan

Проблема здесь заключается в том, что 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 не нужна.)

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


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

47
Mark Longair

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

Я скопировал проект из другой папки в мой новый репозиторий 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>
27
Patrick Lee Scott

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

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

4
Ben

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

4
theBushman

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

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

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

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

Теперь вы можете сделать

git add . 
git status
1
nilansh bansal

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

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

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

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

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

0
Tahir Khalid

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

0
AndyZe

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

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

0
insanebits

Давайте процитируем документацию для -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>. Вам нужно дать ему шаблон, который рекурсивно соответствует всему вашему дереву.

0
bmargulies