Не могу увидеть новые файлы, добавленные в мой рабочий каталог git - PullRequest
39 голосов
/ 08 июля 2011

git версия 1.7.4.1

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

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

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

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

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

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

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

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

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

Ответы [ 9 ]

49 голосов
/ 15 июля 2011

Если 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 и т. Д.), Попробуйте переместить ваш репозиторий на локальный диск.
29 голосов
/ 15 июля 2011

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

17 голосов
/ 08 июля 2011

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

  • У вас есть правило в .gitignore, которое игнорирует файлы
  • У вас есть каталог .git в одном из скопированных каталогов
9 голосов
/ 25 января 2016

Я создал пакет, заканчивающийся на 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 для более подробной информации.

https://stackoverflow.com/a/28918909/4082503

3 голосов
/ 29 марта 2019

Это, скорее всего, игнорируется вашим .gitignore файлом.

Позвоните git status --ignored и посмотрите, появляется ли ваш файл.

3 голосов
/ 23 июля 2016

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

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

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

3 голосов
/ 04 апреля 2013

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

1 голос
/ 06 мая 2018

Android Repo - Та же проблема, с которой я столкнулся - Исправлено, как показано ниже

Каким-то образом я добавил "/app" in .gitignore file.Теперь после удаления "/app" все заработало.

Пожалуйста, проверьте ваш .gitignore.

1 голос
/ 05 августа 2015

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...