Есть ли команда игнорирования для git, как для svn?


125

Я новый пользователь gitи начинаю новый проект. У меня есть куча точечных файлов, которые я хотел бы игнорировать. Есть ли команда игнорирования, gitкак есть svn?


1
Хорошая альтернатива gitignore: git update-index --assume-unchanged <file> , спасибо stackoverflow.com/a/16442091/2162226
Джин Бо

Ответы:


136

Специальной git ignoreкоманды нет.

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

Обратите внимание, что только имена файлов, начинающиеся с, /будут относиться к каталогу, в котором .gitignoreнаходится. Все остальное будет соответствовать файлам в любом подкаталоге.

Вы также можете редактировать, .git/info/excludeигнорируя определенные файлы только в этой одной рабочей копии. .git/info/excludeФайл не будет совершен, и, таким образом , применяется только локально в этой одной рабочей копии.

Вы также можете создать глобальный файл с шаблонами, которые нужно игнорировать git config --global core.excludesfile. Это будет локально применяться ко всем рабочим копиям git в одной учетной записи пользователя.

Беги git help gitignoreи читай текст для подробностей.


75
Отсутствие простой команды игнорирования кажется таким упущением со стороны команды git.
jcollum

4
@jcollum На первый взгляд, это так, но простота псевдонима команды для добавления новых И сложность ее создания и проработка всех крайних случаев / ошибок / потенциальных проблем редактирования текстового файла также имеет смысл оставить это на усмотрение пользователь. Я чувствую противоречие, потому что я одновременно согласен и не согласен с вами.
abelito

100

Очень полезная команда git ignore поставляется с замечательными tj / git-extras .

Вот несколько примеров использования:

Список всех игнорируемых в настоящее время шаблонов

git ignore

Добавить узор

git ignore "*.log"

Добавьте один из шаблонов с gitignore.io

git ignore-io -a rails

git-extras предоставляет еще много полезных команд. Определенно стоит попробовать.


1
Значит, если я использую git ignore "index.html", он проигнорирует этот файл?
JohnAndrews

Команда -t все еще применима? Когда я запускаю его, он просто добавляет -t и любой шаблон, который я пытаюсь добавить в файл игнорирования git
Bynho

50

В Linux / Unix вы можете добавлять файлы в файл .gitignore с помощью echoкоманды. Например, если вы хотите игнорировать все .svnпапки, запустите это из корня проекта:

echo .svn/ >> .gitignore

1
Я обнаружил этот твит, используя этот синтаксис twitter.com/noodl_io/status/669904872704253953
JohnAndrews

3
В Git Bash в Windows мне нужно было добавить предшествующий /и завершающий '\' (для создания новой строки), например echo /nbproject/project.properties\ >> .gitignoreи echo /nbproject/project.xml\ >> .gitignore.
Ryan

15

У вас есть два способа игнорировать файлы:

  • .gitignoreв любой папке игнорирует файлы, указанные в файле для этой папки. Возможно использование подстановочных знаков.
  • .git/info/excludeсодержит глобальный шаблон игнорирования, аналогичный global-ignoresфайлу конфигурации в subversions.

6
Обратите внимание, что шаблоны в .gitignoreфайле, которые не содержат '/', сопоставляются рекурсивно (то есть также во всех подкаталогах каталога, в котором .gitignoreнаходится файл), в отличие от svn:ignoreсвойств каталога в Subversion.
Якуб Наребски

6

Надеюсь, еще не поздно.

Если вы работаете в Windows, вы можете просто сделать следующее, чтобы создать файл .gitignore

echo name_of_the_file_you_want_to_ignore.extension > .gitignore

Чтобы отредактировать .gitignore, вы можете запустить

notepad .gitignore

2
Не используйте это, если у вас уже есть файл .gitignore, он перезапишет его! Чтобы добавить файл для игнорирования, используйте это: echo ignore.ext >> .gitignore
TomEberhard

Вы правы, желательно использовать только в том случае, если файла .gitignore не существует. Лучше использовать "блокнот .gitignore", если у вас есть файл .gitignore, он откроет его, а если нет, он создаст его, а затем вы сможете добавить все файлы из блокнота. 1 файл / папка в строке
Nesar

3

Создайте файл с именем .gitignore в корне вашего репозитория. В этом файле вы указываете относительный путь к каждому файлу, который хотите игнорировать, в одной строке. Вы можете использовать *подстановочный знак.


2

Используя уже предоставленные ответы, вы можете git ignoreвыполнить собственную команду, используя псевдоним . Либо добавьте это в свой файл ~ / .gitconfig:

ignore = !sh -c 'echo $1 >> .gitignore' -

Или запустите эту команду из оболочки (* nix) по вашему выбору:

git config --global alias.ignore '!sh -c "echo $1 >> .gitignore" -'

Вы также можете создать git excludeкоманду, заменив ignoreна excludeи .gitignoreна .git/info/excludeв приведенном выше.

(Если вы еще не понимаете разницу между этими двумя файлами, прочитав ответы здесь, см. Этот вопрос .)


1
Ответ здесь правильно расширяет 1 доллар: stackoverflow.com/a/21884533/1465227
Archangel33,

2

для имен, отсутствующих в рабочей копии или репо:

echo /globpattern >> .gitignore

или для существующего файла (командная строка типа sh):

echo /$(ls -1 file) >> .gitignore   # I use tab completion to select the file to be ignored  
git rm -r --cached file             # if already checked in, deletes it on next commit

1

Полезно определить для вашего проекта полный файл .gitignore . Наградой является безопасное использование удобных команд --allили -aфлагов вроде addи commit.

Также рассмотрите возможность определения глобального файла ~ / .gitignore для часто игнорируемых шаблонов, таких как *~ , который охватывает временные файлы, созданные Emacs.


1

Для этого вам нужно установить git-extras. Вы можете установить его в Ubuntu с помощью apt-get,

$ sudo apt-get install git-extras

Затем вы можете использовать команду git ignore.

$ git ignore file_name

3
На Mac, если у вас установлен Homebrew, вы можете запустить brew install git-extras.
Alex Glover

0

Вы также можете использовать gitignore.io Джо Блау

Либо через веб-интерфейс https://www.gitignore.io/

Или, установив инструмент CLI, это очень просто и быстро, просто введите следующее на своем терминале:

Linux:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bashrc && source ~/.bashrc

OSX:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bash_profile && source ~/.bash_profile

А затем вы можете просто ввести giвсе элементы платформы / среды, для которых вам нужны критерии gitignore.

Пример!
Допустим, вы работаете над проектом узла, который включает grunt, и используете webstorm в Linux, тогда вы можете ввести:
gi linux,webstorm,node,grunt > .gitignore(чтобы создать новый файл)
или
gi linux,webstorm,node,grunt >> .gitignore(чтобы добавить / добавить новые правила в существующий файл )

бац, тебе хорошо идти

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.