Как использовать команду gitignore в git

120

Я впервые работаю над git. Я разместил свою ветку на github, и она поместила всю библиотеку и документы в github. Что я могу сделать и как использовать команду gitignore, чтобы снова избежать той же ошибки.

user1559230
источник
1
.gitignore- это файл в корневом каталоге git. Добавьте шаблоны имен для файлов, которые вы хотите игнорировать, и файлы будут проигнорированы автоматически.
LonelyWebCrawler,
Я на убунту. Не могли бы вы назвать путь к корневому каталогу git
user1559230
2
Это каталог, в котором вы использовали git init. .gitКаталог находится там.
LonelyWebCrawler,
2
Для тех, кто не знает, как использовать gitignore - перейдите на gitignore.io, вы можете ввести все инструменты, которые вы используете (symfony, CakePHP, ZendFramework, wordpress, grunt, возвышенный текст, netbeans и т. Д., Вы получите упражнение ...), и он сгенерирует для вас файл игнорирования git. Если вы не знаете, как использовать gitignore, я думаю, что лучший способ изучить его - это посмотреть на хороший пример использования (например, тот, который сгенерирован gitignore.io. Если вы хотите использовать его из строки cmd (забавный способ ) посмотреть Tutorial: vimeo.com/70609819
DevWL

Ответы:

163

Итак, исходя из того, что вы сказали, эти файлы представляют собой библиотеки / документацию, которые вы не хотите удалять, но также не хотите нажимать github. Пусть у вас есть свой проект в папку your_projectи папку Doc: your_project/doc.

  1. Удалите его из каталога проекта (без фактического удаления): git rm --cached doc/*
  2. Если вы не уже есть .gitignore, вы можете сделать один правильный внутри папки проекта: project/.gitignore.
  3. Вставьте doc/*.gitignore
  4. Подготовьте файл к фиксации: git add project/.gitignore
  5. Commit: git commit -m "message".
  6. Отправьте изменение на github.
u19964
источник
Подскажите, пожалуйста, как написать файл .gitignore. т.е. как записать путь к папкам и файлам, которые я хочу игнорировать, внутри файла .gitignore. Спасибо
user1559230
Спасибо за Ваш ответ. Перед фиксацией мне пришлось запустить git add -A
user1559230
4
Привет, gitignore - это просто текстовый файл. На самом деле это .gitignore (DOTgitignore). Просто введите имена файлов / типов файлов, которые git должен игнорировать, по одному в каждой строке. Пример: sujee.net/tech/articles/gitignore
u19964,
42

Если у вас нет файла .gitignore, сначала используйте:

touch .gitignore

затем эта команда для добавления строк в ваш файл gitignore:

echo 'application/cache' >> .gitignore

Будьте осторожны с новыми строками

Сердар Дегирменчи
источник
touchФайл сначала не нужен . >>является синонимом >того, что файл еще не существует. echoдобавляет новую строку в конец вывода. Вы можете остановить это с помощью -n. Если вам нужны различные игнорирования, либо делать различные эхо - сигналы, или использовать -e, следующим образом : echo -e "**/cache/\n**.pyc" >> .gitignore. Двойная звездочка также соответствует всем файлам, которые копаются в папках рекурсивно. /На всякий случай используйте в конце папок.
mazunki
1
@Andrew tl; dr: Добавить каждый игнорируемый файл с помощью echo "file_to_be_ignored" >> .gitignore, больше ничего делать не нужно. Заканчивайте имена папок символами /as echo "**/modules/" >> .gitignore.
мазунки
Почему мой комментарий был удален
Андрей
12

git ignore - это соглашение в git. Установка файла по имени .gitignore будет игнорировать файлы в этом каталоге и более глубоких каталогах, которые соответствуют шаблонам, содержащимся в файле. Чаще всего используется только один такой файл на верхнем уровне. Но вы можете добавить других в структуру каталогов глубже, чтобы игнорировать еще больше шаблонов или перестать игнорировать их для этого каталога, а затем и для более глубоких.

Точно так же вы можете «отменить игнорирование» определенных файлов в более глубокой структуре или в определенном подмножестве (т. Е. Игнорировать * .log, но все равно хотите отслеживать important.log), указав шаблоны, начинающиеся с !. например:

*.log !important.log

игнорирует все файлы журналов, но отслеживает файлы с именами important.log

Если вы отслеживаете файлы, которые хотели игнорировать, удалите их, добавьте шаблон в файл .gitignore и добавьте все изменения.

# delete files that should be ignored, or untrack them with 
# git rm --cached <file list or pattern>

# stage all the changes git commit
git add -A 

с этого момента они не будут отслеживаться в вашем репозитории.

Если вы хотите очистить свою историю, вы можете

# if you want to correct the last 10 commits
git rebase -i --preserve-merges HEAD~10 

затем пометьте каждую фиксацию с помощью eили edit. Сохраните план. Теперь git воспроизведет вашу историю, останавливаясь при каждой фиксации, отмеченной e. Здесь вы удаляете ненужные файлы, git add -Aа затем git rebase --continueпока не закончите. Ваша история будет чистой. Обязательно сообщите своим коллегам, что вам придется принудительно нажимать, а им придется перебазировать то, что они еще не отправляли.

Адам Димитрук
источник
8

В корневом каталоге git есть файл с именем .gitignore. Это файл, а не команда. Вам просто нужно вставить имена файлов, которые вы хотите игнорировать, и они будут автоматически проигнорированы. Например, если вы хотите игнорировать все файлы автосохранения emacs, которые заканчиваются на ~, вы можете добавить эту строку:

*~

Если вы хотите удалить ненужные файлы из своей ветки, вы можете использовать git add -A, который « удаляет файлы, которых больше нет в рабочем дереве ».

Примечание. То, что я назвал корневым каталогом git, - это просто каталог, который вы использовали git initвпервые. Здесь же вы можете найти .gitкаталог.

LonelyWebCrawler
источник
что будет с уже
отправленными
4

Если у вас нет файла .gitignore. Вы можете создать новый

touch .gitignore

И вы можете исключить папку, введя следующую команду в файле .gitignore

/folderName

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

Картик Вишну Кумар
источник
2

Есть несколько способов использовать gitignore git

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

просто создайте файл .gitignore и напишите все, что вы хотите игнорировать, образец файла gitignore:

# NPM packages folder.
node_modules

# Build files
dist/

# lock files
yarn.lock
package-lock.json

# Logs
logs
*.log
npm-debug.log*

# node-waf configuration
.lock-wscript

# Optional npm cache directory
.npm

# Optional REPL history
.node_repl_history

# Jest Coverage
coverage

.history/

Вы можете найти больше в документации git gitignore

Афак Ахмед Хан
источник
1

на моем Mac я нашел этот файл .gitignore_global .. он был в моем домашнем каталоге скрыт, так что сделайте a, ls -altrчтобы увидеть его.

Я добавил файлы eclipse, которые хотел, чтобы git игнорировал. содержимое выглядит так:

 *~
.DS_Store
.project
.settings
.classpath
.metadata
j2emanue
источник
когда я поместил файл .gitignore в папку своего проекта, он испортил мой проект eclipse локально. знаете ли вы, почему это могло произойти и как этого избежать? пока я просто держусь подальше от .gitignore.
JesseBoyd
Я больше не использую eclipse. Inteilji сейчас
j2emanue