Получите git, чтобы не показывать файлы без следа

При выполнении git commit существует ли способ не отображать неиспользуемые файлы в моем редакторе (определен в $EDITOR)? Я знаю, как это сделать в оболочке (git status -uno), но я хотел бы сделать это и в редакторе.

Обратите внимание, что я не хочу игнорировать эти файлы навсегда; Я просто не хочу видеть их в определенных случаях.

Ответ 1

На странице git-commit:

       -u[], --untracked-files[=]
           Show untracked files (Default: all).

           The mode parameter is optional, and is used to specify the handling of untracked
           files. The possible options are:

           ·   no - Show no untracked files

           ·   normal - Shows untracked files and directories

           ·   all - Also shows individual files in untracked directories.

               See git-config(1) for configuration variable used to change the default for
               when the option is not specified.

Ответ 2

Если вы никогда не хотите передавать их на свое репо, используйте файл .gitignore, чтобы игнорировать их. Более подробную информацию можно найти на странице gitignore. Они не будут отображаться в виде незатрещенных файлов при вводе вашего сообщения о фиксации в $EDITOR.

Если вы просто не хотите их видеть при совершении, установите переменную Git config status.showUntrackedFiles в no, как указано здесь:

$ git config --global status.showUntrackedFiles no

Ответ 3

Вы можете временно использовать параметр git commit -uno для маскировки невоспроизводимых файлов (git help commit).

Если вы хотите, чтобы постоянное решение использовало файл .gitignore.

Например, если вы хотите игнорировать файл bar.foo и любой файл с расширением .bak, вам просто нужно создать файл .gitignore в корневой директории вашего проекта, содержащий:

bar.foo
*.bak

Некоторые файлы игнорируются глобальным gitignore файлом (например, файл dot и каталог игнорируются).

Ответ 4

Добавьте имена файлов - или шаблоны (wild cards) для имен файлов - в файл .gitignore и добавьте их в репозиторий:

git add .gitignore
git commit -m 'Added .gitignore file'

Например, для моего репозитория Go у меня есть файл .gitignore, содержащий:

*.o
*.a
*.so
*.pl
*.6
*.out
_obj/
_cgo_defun.c
_cgo_export.c
_cgo_export.h
_cgo_gotypes.go
*.cgo1.go
*.cgo2.c
example/example
ifix1/esqlc-cmds.c

Я должен сжать имена '_cgo_' с помощью wild card; другой файл .c 'создается из файла .ec, поэтому его не нужно отслеживать.

Ответ 5

Иногда уведомления не нужны ни об измененном файле репо, ни о новом файле, который необходимо добавить в репо. Однако добавление имени файла в .gitignore также не может быть хорошим вариантом. Например, локально созданные файлы, которые другие пользователи не могут генерировать (например, файлы, созданные редактором) или файлы экспериментального тестового кода, могут оказаться непригодными для отображения в файле .gitignore.

В этих случаях используйте одно из следующих решений:

  • Если файл является измененным файлом репо

    Используйте команду:

    git update-index --assume-unchanged "$FILE"

    Чтобы отменить это, используйте команду:

    git update-index --no-assume-unchanged "$FILE"

    Команда update-index не работает с новыми файлами, которые еще не были добавлены в репо.

  • Если файл является новым и не добавлен в репо

    Добавьте свое имя файла в файл repo exclude:

    echo "$FILE" >> .git/info/exclude

    Это также работает для измененных файлов репо, но для него нет конкретной команды отмены. Файл exclude нужно будет отредактировать и удалить из него имя файла. Или другие команды могут аппроксимировать его:

    ex -s -c"g/^${FILE}\$/d" -cwq .git/info/exclude

    Обратите внимание, что это перезаписывает существующий файл exclude, и если указанное имя файла содержит специальные символы, которые могут повлиять на регулярное выражение, результаты непредсказуемы.

    Это использование файла exclude рекомендуется на странице "Игнорировать файлы" в справке GitHub.