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


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

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'"

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

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


обновление: кажется, из сообщения об ошибке, что вы процитировал в комментариях ниже, что вы добавили эти другие репозитории 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 папки внутри предполагаемых подмодулей и внутри корня проекта, а затем делает новый 'git init'

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

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

эта ошибка возникает из-за того, что вы добавили папку, которая уже связана с каким-то другим репозиторием github . Родительская папка, с которой вы работаете, связана с каким-либо другим репозиторием. Чтобы решить эту проблему, сначала скопируйте файлы, которые вы хотите загрузить на github из папки BankAccount, а затем удалите папку BankAccount . Теперь создайте новую папку, а затем вставьте в нее файлы. Это связано с подмодулями git, которые автоматически принимаются ГИТ в ранее папку. Сейчас вы можете сделать

git add . 
git status

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

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

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

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

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

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

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

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

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