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

Как сделать git -add с помощью подстановочных знаков при игнорировании файлов?

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

  • Инициализировать репозиторий Git.
  • Создайте .gitignore с содержимым:

    *.foo
    
  • Создайте файлы "test.txt" и "test.foo".

  • Попробуйте git add .

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

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

4b9b3361

Ответ 1

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

От git-add(1):

Команда git add не добавляет по умолчанию игнорируются файлы. Если игнорируемые файлы были явно указанный в командной строке, git add провалится со списком игнорируемых файлы. Игнорируемые файлы, достигшие рекурсия каталога или имя файла globbing выполняется git (укажите ваш globs перед оболочкой) будет молча игнорируется.

Ответ 2

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

git add '*test*'

позволит git выполнять собственное подтачивание.

Ответ 3

Другой способ сделать это - избегать символов глобуса, например:

git add \*

Ответ 4

Обратите внимание, что 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".