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 *
- это не помогло
9 ответов
Проблема здесь в том, что 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
Я просто воссоздал это случайно.
Я скопировал проект из другой папки в мой новый репозиторий 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>
Довольно простое решение для меня - я открыл Git Bash в подкаталоге проекта.
Откройте Bash и, выполнив команды в корневом каталоге, исправите эту проблему; git add -A .
работал как положено.
Я решил эту проблему, удалив папки.git внутри предполагаемых подмодулей и внутри корня проекта, а затем выполнил новый 'git init'
Эта ошибка возникает из-за того, что вы добавили папку, которая уже связана с каким-либо другим хранилищем github.
Чтобы решить эту проблему, сначала скопируйте файлы, которые вы хотите загрузить в github, из папки BankAccount, а затем удалите папку BankAccount.
Теперь создайте новую папку и вставьте в нее файлы.
Это происходит из-за того, что подмодули git автоматически используются git, присутствующими в более ранней папке.
Теперь вы можете сделать
git add .
git status
У меня была похожая проблема на Windows, где я git add --all
оставил некоторые файлы без изменений, проблема заключалась в том, что было несколько файлов с разными корпусами 'test.php' и 'Test.php', поэтому git отслеживал Test.php, а не его строчную версию.
Это может помочь кому-то в будущем и избавить от царапин на голове.
Давайте процитируем документацию для -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>
, Вы должны дать ему шаблон, который рекурсивно соответствует всему вашему дереву.
У меня была эта проблема последние пару дней с BitBucket. Я работаю над проектом, который отслеживается в его хранилище Visual Studio 2013 Community Edition.
Однако я иногда использовал Git Bash для выполнения коммитов вручную, и тогда все начинало идти не так, а файлы просто игнорировались. Пытался отложить репо, но это не помогло.
Наконец, я обнаружил, что если вы зайдете в Visual Studio > Team Explorer > щелкните "Синхронизация", Visual Studio выполнит извлечение, а затем зафиксирует и отправит все неотслеживаемые файлы.
Вы можете сделать то же самое вручную через Git Bash, если вам нравится консоль, как я.
Надеюсь, это кому-нибудь поможет.
У меня была эта проблема, потому что я клонировал чей-то репозиторий в свой проект. Когда я его клонировал, в их проекте уже были папки / файлы.git и.gitignore. После удаления этих существующих файлов git и повторного запуска с git все работает нормально.