Додайте .gitignore до gitignore


140

Чи можливо додати .gitignoreфайл до .gitignoreсебе?

.gitignore

Не працює, хоча

Я не хочу бачити це в редагованих файлах


8
чому б ти хотів це зробити? просто введіть свої зміни. .gitignoreповинен бути частиною вашого сховища, перелічуючи шаблони файлів, які є непотрібними для проекту.
KurzedMetal

1
.gitignoreмає бути частиною вашого сховища, щоб усі в вашій команді ігнорували або перевіряли в одних і тих же файлах. Тільки тому, що .gitignoreдесь у папках вашого коду, це не означає, що вам потрібно розгорнути його.
Райан Лунді


ви можете використовувати git rm --cached .gitignoreі відстежувати .gitignore
hassanzadeh.sd

Відповіді:


170

Мета .gitignoreфайлу - запобігти випадковому введенню спільних файлів у проект, наприклад, згенерованих файлів кешу. Тому не слід ігнорувати .gitignore, оскільки він повинен бути включений у сховище.

Якщо ви хочете ігнорувати файли лише в одному сховищі, але хочете уникнути вчинення списку ігнорування (наприклад, для особистих файлів), ви можете додати їх до .git/info/excludeцього сховища.

Якщо ви хочете ігнорувати певні файли у кожному сховищі на вашій машині, ви можете створити файл ~/.gitignore_globalі потім запустити

git config --global core.excludesfile ~/.gitignore_global

36

.Gitignore може ігнорувати себе, якщо він ніколи не був зареєстрований у:

mhaase@ubuntu:~$ git --version
git version 1.7.9.5
mhaase@ubuntu:~$ git init temp
Initialized empty Git repository in /home/mhaase/temp/.git/
mhaase@ubuntu:~$ cd temp
mhaase@ubuntu:~/temp$ touch .gitignore foo bar baz bat
mhaase@ubuntu:~/temp$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .gitignore
#       bar
#       bat
#       baz
#       foo
mhaase@ubuntu:~/temp$ echo "foo" >> .gitignore
mhaase@ubuntu:~/temp$ echo ".gitignore" >> .gitignore
mhaase@ubuntu:~/temp$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       bar
#       bat
#       baz
nothing added to commit but untracked files present (use "git add" to track)

Якщо ви зареєструєтесь .gitignore (перед тим, як сказати йому ігнорувати себе), він завжди відображатиметься у статусі git, навіть якщо згодом ви модифікуєте його, щоб ігнорувати себе.


1
Точно це моя справа. Я хочу мати місцеве місце .gitignoreдля роботи git-svn, яке ніхто не повинен бачити. Тому я просто додав його до себе, і він просто працював. Але потім я погуглив, щоб побачити, чи пояснять хтось із людей, що пояснюють, як це "погано". Цю відповідь слід прийняти, і тоді я також підтримаю .git/info/excludeпропозиції. Тож його просто потрібно відслідковувати ... Не дуже дивно, принаймні, якщо ти коли-небудь був "підривним" (svn).
Томаш Гандор

У мене спочатку .gitignoreє резервна копія файлу. Тоді я використовую git rm .gitignoreі здійснюю ці зміни. Нарешті, додайте та .gitignoreзнову введіть файл із правилом для .gitignore. Це працює!
qzhang

4
Щоб виправити це, можна запустити git rm --cached .gitignore.
Гедеон

19

Не існує насправді вагомих причин для цього. Якщо ви хочете, щоб файли ігнорувались лише для вашого клону , додайте їх .git/info/excludeу .gitignoreфайл , а не у файл.


я отримую "Не можу завершити операцію через існуючі зміни у наступному файлі", і файл, у якому перераховано, є той, який у мене є, виключити. Будь-яка ідея чому?
Пол Маккарті

3

Після введення .gitignoreфайлу gitignore спробуйте наступне:

git rm -r --cached .
git add --all
git commit -m "ignoring gitignore"
git push --set-upstream origin master

Це має працювати, хоча, як уже було сказано, ігнорування gitignore може бути контрпродуктивним, якщо ваше репо користується кількома користувачами.


2

Так, ти можеш; ви все ще бачите його в редагованих файлах, оскільки він все ще відслідковується git, а файли, відслідковувані git, завжди позначаються як змінені, навіть якщо вони знаходяться у .gitignore. Так що просто відстебніть його.

Але чому б не здійснити чи скинути зміни, які ви маєте на цьому? Це набагато кращий спосіб зняти його зі статусу ... Також пам’ятайте, що будь-який свіжий клон вашої репо повинен буде додати його .gitignore, що може дратувати.


Так, і вам потрібно буде видалити його окремо від git got rm --cached .gitignore, мабуть.
Тадек

git rm - cached .gitignore видаляється з git. Це руйнує і не бажано. Як просто ігнорувати .gitignore для місцевого клону?
javadba

0

Ви можете досягти цього, записавши це у свій файл .gitignore. *Додасть все , щоб ігнорувати список і потім !.gitignoreвидалить файл .gitignore зі списку ігнорування.

*
!.gitignore

3
Це досягає протилежного до того, чого хоче ОП
Дмитро Паржицький

Так, правильно, я вже згадував те саме. *проігнорує все. Включаючи .gitignoreфайл.
Анкіт Сінгх

1
Я маю в виду, OP намагається видалити в .gitignoreфайл з кодову (додаючи його до себе, що на насправді не має сенсу, але хто я такий, щоб судити). Тут я бачу пропозицію, яка гарантує, що файл ніколи не буде ігноровано, а це, в свою чергу, означає, що він існує у ( додається до)
кодовій

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