Чи є команда ігнорування для git, як є для svn?


125

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


1
Хороша альтернатива gitignore: git update-index --assume-unchanged <file> , завдяки stackoverflow.com/a/16442091/2162226
Gene Bo,

Відповіді:


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 На перший погляд це так, але простота згладжування команди для додавання нових І складність створення одного та робота над усіма крайовими справами / gotchas / потенційними проблемами редагування текстового файлу також має сенс залишити його на користувач. Я відчуваю себе конфліктним, тому що я з вами згоден і не згоден.
абеліто

100

Дуже корисна команда ігнорування git поставляється з дивовижними 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.
Райан

15

У вас є два способи ігнорування файлів:

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

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 не існує. Краще скористатися "Блокнот. 1 файл / папка на рядок
Несар

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
Архангел33,

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. Ви можете встановити його в Ubuntu за допомогою apt-get,

$ sudo apt-get install git-extras

Тоді ви можете скористатися командою git ignore.

$ git ignore file_name

3
На Mac, якщо у вас встановлений Homebrew, ви можете запустити brew install git-extras.
Алекс Гловер

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.

Приклад!
Скажімо, ви працюєте над проектом вузла, який включає грунт, і ви використовуєте веб-шторм на Linux, тоді ви можете ввести:
gi linux,webstorm,node,grunt > .gitignore(створити абсолютно новий файл)
або
gi linux,webstorm,node,grunt >> .gitignore(додати / додати нові правила до наявного файлу )

бам, ти добре підеш

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.