Подтвердить что ты не робот

Git неверный список файлов неверен

Как-то, git понял, что у меня есть необработанный файл (каталог, который был в моем хранилище довольно долго, ~ 17 месяцев). Во всяком случае, я не могу убедить git, что это не необработанный файл. Кроме того, я не могу повторно добавить файл (ы), о котором идет речь. Любая идея, как я могу это исправить?

Пример:

➜ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   rosetta_tests/profile/tests/docking/
nothing added to commit but untracked files present (use "git add" to track)

Я пытаюсь добавить каталог и повторно проверить состояние.

➜ git add rosetta_tests/profile/tests/docking/
➜ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   rosetta_tests/profile/tests/docking/
nothing added to commit but untracked files present (use "git add" to track)

Чтобы быть уверенным (из корня моего исходного дерева)

➜ git add .
➜ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   rosetta_tests/profile/tests/docking/
nothing added to commit but untracked files present (use "git add" to track)

Что здесь происходит? Как я могу убедить git исправить себя?

ИЗМЕНИТЬ

Еще несколько деталей:

- файлы не находятся в .gitignore

. В рассматриваемой папке есть три отслеживаемых файла, поэтому он не пуст.

-После еще большего копания, похоже, что это может произойти из-за изменения случая отслеживаемой папки. Это, к сожалению, не так (каламбур!). Имя папки никогда не менялось.

-Содержание каталога док-станции:

➜ ls -lA rosetta_tests/profile/tests/docking/.
total 16
-rw-r--r--  1 tim  staff  2209 Jul 17 10:47 command
-rw-r--r--  1 tim  staff   260 Jul 17 10:47 flags
drwxr-xr-x  3 tim  staff   102 Jul 17 10:47 input
4b9b3361

Ответ 1

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

git add -A - это то, что вы хотите. Он добавит все.

Ответ 2

Я решил это, запустив

git clean -f

Ответ 3

У меня была такая же ошибка: никаких изменений в случае, никаких проблем с .ignore и в каталоге действительно содержались файлы, которые я определенно хотел сохранить. Добавление dir, commit, git add -A и других средств не имело никакого эффекта.

Я закончил удаление каталога с помощью "git clean", а затем снова просмотрел файлы внутри каталога.

Вот что я сделал:

[email protected]> git status
# On branch master
# Your branch is ahead of 'origin/master' by 10 commits.
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   app/models/xSpecific/
nothing added to commit but untracked files present (use "git add" to track)

В этот момент я сделал резервную копию каталога "xSpecific" на всякий случай. Затем я сделал сухой пробег с "git clean" (опция -n означает "сухой ход" и -d очищает удаленные каталоги):

[email protected]> git clean -n -d
Would remove app/models/xSpecific/

После двойной и тройной проверки я продолжил уборку (флаг -f означает "сила" и необходим, чтобы убедить Git в том, что вы серьезно. Очень хороший дизайн, если вы спросите меня):

[email protected]> git clean -d -f
Removing app/models/xSpecific/

[email protected]> git status
# On branch master
# Your branch is ahead of 'origin/master' by 10 commits.
#
# Changed but not updated:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   deleted:    app/models/xSpecific/GetAddressesLog.java
#   deleted:    app/models/xSpecific/GetProductLog.java
#
no changes added to commit (use "git add" and/or "git commit -a")

До сих пор так хорошо. Каталог больше не указана, но файлы, конечно, тоже исчезли. Я мог бы восстановить их из моей резервной копии, но для этого было создано Git для:

[email protected]> git checkout -- app/models/xSpecific/GetAddressesLog.java
[email protected]> git checkout -- app/models/xSpecific/GetProductLog.java

[email protected]> git status
# On branch master
# Your branch is ahead of 'origin/master' by 10 commits.
#
nothing to commit (working directory clean)

Время праздновать! На самом деле, возможно, было бы проще просто клонировать новую копию хранилища и использовать это вместо этого, но, сделав это, я научился чему-то новому:).

Ответ 4

Это решило проблему для меня rm .git/fs_cache

Ответ 5

Тот же вопрос, который я получил и решил

git clean -f -n

Ответ 6

У меня были важные неотслеживаемые файлы, и я не мог просто запустить git clean -f как предполагают некоторые ответы.

Я пытаюсь добавить каталог и перепроверить статус.

➜ git add rosetta_tests/profile/tests/docking/

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

Поэтому я попытался добавить конкретно один из якобы неотслеживаемых файлов, и это сработало:

$ git status
On branch foo
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        important.txt
        foo/foo.java
        foo/bar.java
        foo/baz.java
        foo/qux.java

nothing added to commit but untracked files present (use "git add" to track)

$ git add -- foo/foo.java
fatal: pathspec 'foo/foo.java' did not match any files

$ git status
On branch foo
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        important.txt

nothing added to commit but untracked files present (use "git add" to track)

Ответ 7

Эта ошибка появилась для меня, когда git add не удалось из-за слишком длинного имени файла в подкаталоге. (в моем случае что-то в node_modules)

В этом случае добавление файла .gitignore с содержимым * в папку node_modules позволило git add работать до завершения.

Итак, обратите внимание на вывод команды git add. (или -A или - -A ll) и убедитесь, что он не останавливается преждевременно из-за ошибки. Все мои "неотслеживаемые" файлы и папки были успешно добавлены после того, как был применен правильный .gitignore, и я смог зафиксировать и отправить свои изменения.