Мерзавец добавить. -> все еще "нечего коммитить" с новыми файлами

Я борюсь с Git, я не могу добавить свои файлы. Я побежал ls чтобы показать, что файлы находятся в текущем каталоге, затем запустил git add . затем git status который показал "нечего совершать".

JJ-Computer:first_app JJ$ git init

Reinitialized existing Git repository in /Users/JJ/rails_projects/first_app/.git/

JJ-Computer:first_app JJ$ ls

Diary.txt README.rdoc config.ru log   tmp
Gemfile   Rakefile  db    public    vendor
Gemfile.lock  app   doc   script
README    config    lib   test

JJ-Computer:first_app JJ$ git add .

JJ-Computer:first_app Jenn$ git status

# On branch master
nothing to commit (working directory clean)

JJ-Computer:first_app JJ$ 

16 ответов

Решение

Ваши команды выглядят правильно (я делал это много раз).

Первая попытка

git add --all

а потом попробуй git status, Я не думаю, что это решит, но стоит попробовать дальше.

Затем попробуйте просмотреть ваш файл.gitignore, если он у вас есть (на верхнем уровне, где вы сделали git init).

cat .gitignore

Удалите все списки, которые приводят к игнорированию ваших файлов. Например, есть ли запись с просто *?

Следующая попытка:

git add --force

а потом попробуй git status,

Если ничего из этого не работает, я замечаю, что ваш вывод из git init говорит "переинициализирован", а не "инициализирован", так что что-то, возможно, испортилось. Если вы только что инициализировали его и не против потерять историю, начните сначала с удаления.git dir:

rm -rf .git

А затем повторите ваши те же команды выше. Если это не сработает, потребуется дополнительная информация о вашей настройке. Например, у вас может быть глобальный файл.gitignore: ~/.gitignore_global что нужно отредактировать (или удалить, если вы этого не хотите).

Поскольку я сталкивался с подобной проблемой несколько раз, я просто хотел бы добавить, что вам следует дважды проверить, что вы пытаетесь добавить и в данный момент находитесь в корневой папке вашего проекта.

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

В этом случае git ожидает, что вы будете рассматривать это как субмодуль. В противном случае просто удалите это .git (в каталоге, а не в корне) и повторите попытку.

Удобная команда:

find . -name '.git' -type d

У меня была аналогичная проблема, и я понял, что делаю git add . из подкаталога main.

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

В моем случае это вызвано вложением каталога git в текущий каталог git:

A1.java
B1.java
.git
someDirectory
  C1.java
  .git        
cd someDirectoy
rm .git -rf

В моем случае я решил эту проблему с помощью тайника и сразу же применил тайник:

git stash
git stash apply

Эта последовательность оставит репо точно так же, как это было раньше. После этого делаем git add [file] работал правильно.

(Использование git версии 1.7.12.4 под suse linux)

У меня только что была такая ситуация. В моем случае это была проблема с файлом (нижний / верхний регистр). Дело в том, что у меня былNuGet.config файл был изменен, и после этого Visual Studio по какой-то причине заново создала этот файл, но с именем NuGet.Config (обратите внимание, не .config, но .Config).

Самым простым решением, которое я нашел, было удаление (фактически, перемещение) этого файла в другое место и фиксация вообще без этого файла. Вgit status сообщение было

[deleted] NuGet.config
[deleted] NuGet.Config

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

Короче говоря, в моем случае это была коллизия стратегии именования файлов. В Windows символы верхнего / нижнего регистра в именах файлов не имеют значения, но для исходных файлов UNIXgit команда делать.

По какой-то причине Git работал хорошо для меня, когда у меня довольно долго были репозитории в каталогах в Google Drive File Stream. Вчера я столкнулся с той же проблемой. git add . не сообщит ничего, чтобы совершить, но git add <some explicit filename> работал без проблем. Я переместил каталог на свой локальный жесткий диск (вне потока файлов Google Drive) и git add . собрал все мои ожидающие изменения. Обратите внимание, что, когда каталог все еще находился в потоке файлов на Google Диске, установка его в положение "Доступен в автономном режиме" не имела никакого эффекта.

Я нашел совершенно другую причину, по которой это происходит, и это нечто особенное. Если вы не в Windows, это, вероятно, вас не коснется. Если вы видите свой файл в неустановленных изменениях,.gitignore никогда не будет вашей проблемой. Проверьте что-нибудь очень внимательно. Есть ли в вашем файле поэтапные и неэтапные изменения?

git status
Staged changes
  modified: source/abc.Ui.Tests
  modified: source/def.Ui.Tests/def.UI.Tests.csproj
Unstaged changes
  modified: source/abc.UI.Tests
  modified: source/def.UI.Tests/def.UI.Tests.csproj

Увидеть разницу? Трудно заметить. Windows не заботится о капитализации, но git bash заботится.

git rm -r source/abc.Ui.Tests
git reset source/abc.UI.Tests
git commit -m "Fixing capitalization"
git checkout source/abc.UI.Tests
git status
     working clean tree

Дополнение к Quux00 .gitignore ответ, я обнаружил, что мой каталог не отслеживался из-за временного каталога 'build' моего менеджера сборки (Maven). Maven добавил "построить" к .gitignore при сборке моей программы и, таким образом, мой собственный каталог (по совпадению с именем "build") не отслеживался. Это было решено путем переименования моего каталога "build".

У меня была эта проблема на окнах. Ни одно из существующих решений вообще не указывало на что-то не так с моей стороны. Я переименовал файлы, поставил, затем переименовал обратно в их прежнее имя файла, затем поставил, и все было хорошо.

Моя проблема решается:

The git pull --rebaseКоманда полезна в ситуациях, когда ваша локальная ветка является фиксацией позади удаленной ветки.

      git pull --rebase origin main

git push -u origin main 

В моей другой попытке я решил это

      git rebase --continue

Только что столкнулся с этой проблемой. У меня мой файл уже был добавлен в Git, и никаких изменений, которые нужно было бы зафиксировать, вообще не было.

Поэтому попробуйте отредактировать файл, чтобы увидеть,git statusпоказывает вам другой результат; если да, то ваш файл уже добавлен, и вы можете восстановить его с помощьюgit checkout -p

Пытаться git add <folder_name> по одному.

Если первая папка поставлена. Попробуйте добавить следующую папку. В моем случае один файл содержит какую-то проблему.

Если напрямую запустить git add .при наличии проблем с некоторыми файлами git игнорирует их все. Не эксперт, но со мной случилось вот что:)

Это может показаться немного глупым, но может сэкономить время: проверьте, не отслеживается ли уже файл и нет ли изменений: git ls-files --error-unmatch <file>. Эта команда не должна показывать никаких ошибок, если файл отслеживается.

Я просто трачу несколько минут, чтобы понять это...

У меня была аналогичная проблема с добавлением нового файла в существующую инициализированную папку git. git add <filename>не сработало. Для меня сработалоgit add .Я использую bash 5 и git 2.25 для Mac. Надеюсь, это поможет и кому-то другому... ура.

Другие вопросы по тегам