Как мне сделать git-add с подстановочными знаками, когда присутствуют игнорируемые файлы? - PullRequest
32 голосов
/ 07 апреля 2010

Я использую msysgit на Windows 7 x64.Я не могу понять, как сказать Git добавить много файлов, когда есть файлы, которые .gitignore может игнорировать.Например:

  1. Инициализация репозитория git.
  2. Создание .gitignore с содержимым:

    *.foo
    
  3. Создание файлов"test.txt" и "test.foo".

  4. Try git add <em>.</em>

Когда я пытаюсь это сделать, git жалуется, что test.foo игнорируется, и я должениспользуйте -f, если я действительно хочу добавить это.Я бы предпочел добавить все , но файлы, которые настроены на игнорирование.Я посмотрел документацию по git-add, и похоже, что -A должно помочь;справка говорит: «... и добавьте все неотслеживаемые файлы, которые не игнорируются механизмом .gitignore».Нет игры в кости, когда я пытаюсь git add -A <em>.</em> я получаю ту же ошибку.Использование -f добавляет игнорируемый файл, а это не то, что мне нужно.(Вариант использования - массовое добавление файлов из проекта VS после игнорирования .suo и других файлов.)

Это проблема с используемой реализацией git, или есть какой-то аргумент для git-addчто мне не хватает?

Ответы [ 4 ]

32 голосов
/ 07 апреля 2010

Здесь git add * жалуется, но git add . делает то, что ожидается (1.7.0.4, Linux).

С git-add(1):

Команда git add не добавит по умолчанию игнорируемые файлы. Если есть игнорируемые файлы были явно указано в командной строке, git add потерпит неудачу со списком игнорируемых файлы. Проигнорированные файлы достигнуты рекурсия каталога или имя файла Globbing в исполнении Git (процитируйте шарики перед оболочкой) будут молча игнорируется.

13 голосов
/ 05 декабря 2012

Обратите внимание, что вы можете избежать более сложных шаблонов с одинарными кавычками:

git add '*test*'

позволит git делать свою собственную глобализацию.

6 голосов
/ 13 июля 2012

Еще один способ сделать это - убежать от всплывающих символов, например:

git add \*
2 голосов
/ 01 февраля 2015

Обратите внимание, что git add --ignore-errors * теперь будет работать, даже если некоторые файлы игнорируются.

См. коммит 1d31e5a от Michael J Gruber (mjg) , Git 2.3.0 (февраль 2015 г.)

add: игнорировать только игнорируемые файлы

"git add foo bar" не добавляет ни foo, ни bar, когда bar игнорируется, но умирает, чтобы позволить пользователю перепроверить их вызов команды.
Это становится менее полезным, когда «git add foo.*» подвергается расширению оболочки, а некоторые из расширенных файлов игнорируются.

"git add --ignore-errors" должен игнорировать ошибки при индексации некоторых файлов и добавлять другие. Он игнорирует ошибки от фактических попыток индексации, но не игнорирует ошибку "file is ignored", как описано выше. Это неожиданно.

Измените "git add foo bar", чтобы добавить foo, когда bar игнорируется, но выдается предупреждение и вернуть код ошибки, как до изменения.

То есть, в случае попытки добавления игнорируемых файлов мы теперь действуем таким же образом (с или без "--ignore-errors"), в котором мы действуем для более серьезных ошибок индексации, когда указано "--ignore-errors".

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