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

Невозможно увидеть новые файлы, добавленные в рабочий каталог git

git версия 1.7.4.1

Я использую git в Ubuntu.

Я скопировал некоторые файлы из другого каталога в рабочий каталог git. Обычно отображается под Untracked files. Однако они не появляются. Поэтому я не могу их добавить.

Когда я делаю git status, новые файлы не отображаются.

Я попытался добавить их, выполнив git add source.c, а затем попробовал git status. Файл не показывался.

Итак, я открыл файл и сделал save as как одно и то же имя. Статус git все еще не смог увидеть файл.

Я сделал git ls-files, и новые файлы отображаются в порядке.

Я проверял права доступа к файлам, и они такие же, как и все текущие файлы в моем каталоге git.

У меня никогда не было этой проблемы раньше.

Большое спасибо за любые предложения,

4b9b3361

Ответ 1

Если git ls-files показывает source.c, то он уже должен быть в индексе. Это означает, что оно уже отслеживается и, возможно, уже выполнено. Если source.c вообще не отображается в git status, файл должен быть зафиксирован.

Попробуйте изменить файл, чтобы увидеть, отображается ли оно как измененное в git status. Чтобы убедиться в том, что файл проверен, запустите git cat-file -p HEAD:source.c, чтобы просмотреть содержимое зарегистрированного файла (см. git help revisions для документации о синтаксисе HEAD:source.c).

Кроме того, может быть выполнено одно или несколько из следующих утверждений:

  • Файл был изменен, но бит "предполагать неизменный" установлен в индексе. Взгляните на вывод git ls-files -v source.c. Если первый столбец является строчной буквой, тогда устанавливается бит "предполагать неизменный". Это предотвратит появление каких-либо изменений в git status. Вы можете отключить бит "предполагать без изменений", запустив git update-index --no-assume-unchanged source.c.
  • Файл был изменен, но бит "skip-worktree" установлен в индекс. Если первый столбец вывода git ls-files -v source.c равен s или s, тогда устанавливается бит "skip-worktree" . Вы можете отключить бит "skip-worktree" , запустив git update-index --no-skip-worktree source.c.
  • Ваш индекс поврежден. Попробуйте удалить .git/index (Git будет воссоздавать его по мере необходимости).
  • Проблемы с файловой системой предотвращают правильную работу stat(). Попробуйте запустить git update-index --really-refresh. Если ваш рабочий каталог находится на сетевом диске (NFS, sshfs и т.д.), Попробуйте переместить репозиторий на локальный диск.

Ответ 2

Трудно сказать, что неправильно из приведенной информации, однако в качестве обходного пути вы можете попробовать git add -f filename.c. Это добавит файл, даже если в противном случае он будет проигнорирован.

Ответ 3

Это действительно трюк в темноте, но у меня иногда были подобные проблемы, и это был случай одного из них:

  • У вас есть правило в .gitignore, которое игнорирует файлы
  • У вас есть .git-каталог в одном из каталогов, которые вы скопировали.

Ответ 4

Я создал пакет, заканчивающийся с помощью image.gen, у которого был соответствующий каталог, заканчивающийся на image/gen. И была запись .gitignore, которая была специфична для Android gen/.

Это привело к тому, что файл не добавлялся в git/показ в статусе git.

Проверьте ниже, это помогло мне решить проблему.


Используйте команду git check-ignore для отладки вашего файла gitignore (исключить файлы).

В примере:

$ git check-ignore -v config.php
.gitignore:2:src    config.php

Вышеописанная информация о шаблоне соответствия (если есть) для каждого заданного имени пути (включая строку).

Итак, возможно, расширение вашего файла не игнорируется, но весь каталог.

Возвращаемый формат:

<source> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>

Или используйте следующую команду для печати .gitignore в папке пользователя и репо:

cat ~/.gitignore $(git rev-parse --show-toplevel)/.gitignore $(git rev-parse --show-toplevel)/.git/info/exclude

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

Подробнее см. man gitignore, man git-check-ignore.

fooobar.com/questions/132833/...

Ответ 5

Возможно, стороннее приложение обновило ваш файл gitignore_global.txt (~/.gitignore_global в Linux/OS X). Это было со мной. Я установил "Исходное дерево" и заметьте после этого, что git не отслеживает новые файлы. Он обнаружил, что "Исходное дерево" изменило файл "gitignore_global.txt" и добавило ему несколько расширений, чтобы не отслеживать. Попытайтесь найти этот файл и посмотреть, нет ли там расширений файлов, которые не будут там

Ответ 6

Удаление файла .git/index сделало трюк. Довольно неприятная ошибка, с которой я, похоже, вступаю в контакт, когда я клонирую скелетные модули в свой проект zf2.

Ответ 7

У меня была та же проблема. Git не показывал новых файлов, добавленных в мой проект.

Мой был вызван следующим: Каким-то образом моя основная папка проектов добавлена ​​в "Список игнорирования репозитория" (это то, что вызвано в SourceTree). Это файл .gitignore в корне моей основной папки проектов.

Он работал после того, как я удалил имя папки в файле .gitignore.