Инструменты пользователя

Инструменты сайта


subjects:programming:git

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
subjects:programming:git [2017/09/28 18:43]
subjects:programming:git [2023/05/01 19:29] (текущий)
Объединение коммитов
Строка 49: Строка 49:
  
 Первая строка предписывает Git'у игнорировать любые файлы заканчивающиеся на .o или .a — объектные и архивные файлы, которые могут появиться во время сборки кода. Вторая - то же самое, для файлов заканчивающихся на "''​.log''"​. Первая строка предписывает Git'у игнорировать любые файлы заканчивающиеся на .o или .a — объектные и архивные файлы, которые могут появиться во время сборки кода. Вторая - то же самое, для файлов заканчивающихся на "''​.log''"​.
 +
 +Исключаем папки и файлы, начинающиеся с двух подчёркиваний и содержимое ''​virt.py3'':​
 +<file bash .gitignore>​
 +__*/*
 +__*
 +virt.py3/*
 +</​file>​
 +
 +==== help ====
 +<code bash>$ git help</​code>​
 +
 +==== status ====
 +Вывести информацию обо всех изменениях,​ внесенных в дерево директорий проекта:​
 +<code bash>$ git status</​code>​
 +
 +Краткий вывод:
 +<code bash>$ git status --short
 +$ git status --s</​code>​
 +
 +Обозначения в выводе команды ''​git status -s'':​
 +  * ''​M''​ - (**m**odified) отслеживаемые,​ изменились с прошлого коммита,​ еще не добавлены
 +  * ''​D''​ - (**d**eleted) отслеживаемые,​ удалены после прошлого коммита,​ еще не добавлены
 +  * ''?''​ - (untracked) неотслеживаемые,​ не запрещены к добавлению
 +  * ''​!''​ - (ignored) неотслеживаемые,​ запрещены к добавлению (например,​ в .gitignore)
 +
 +==== add ====
 +<code bash>
 +$ git add .
 +$ git add -all
 +$ git add -A
 +$ git add -update
 +$ git add -u
 +</​code>​
 +
 +  * ''​git add .''​ -- Добавляет файлы ''​M'',​ ''​D'',​ ''?''​.
 +  * ''​-all'',​ ''​-A''​ -- Эти варианты эквивалентны и добавляют ''​M'',​ ''​D'',​ ''?''​. Без точки — из всей рабочей области. С точкой — только текущий путь: ''​git add -A .''​ = ''​git add .''​ + ''​git add -u .''​ \\ <code bash>git add .</​code>​
 +  * ''​-update'',​ ''​-u''​ -- Git обновляет (update) статус уже отслеживаемых файлов т.е. M, D.
 +  * ''​git add *''​ -- Этот синтаксис лучше не использовать,​ т.к. он пытается добавить ''​M'',​ ''?'',​ ''​!'',​ причём последнее приводит к ошибке.
 +
 +==== commit ====
 +<code bash>
 +$ git commit
 +$ git commit -a
 +$ git commit -m "​text"​
 +</​code>​
 +  * ''​git commit''​ -- Если индекс не пустой,​ то на его основе будет совершен коммит,​ после чего пользователя попросят прокомментировать вносимые изменения.
 +    * ''​-a''​ -- Совершит коммит,​ автоматически индексируя изменения в файлах проекта. **Новые** файлы при этом индексироваться **не будут**! Удаление же файлов будет учтено.
 +    * ''​-m "​text"''​ -- Комментируем коммит прямо из командной строки вместо текстового редактора. \\ <code bash>git commit -m "​Название коммита"</​code>​
 +    * Чтобы изменить имя последнего коммита,​ достаточно ввести:​ \\ <code bash>git commit --amend -m "​Новое название коммита"</​code>​. Для изменения имени других коммитов,​ нужно сделать:​ \\ <code bash>git commit --amend -c <commit ID></​code>​
 +
 +==== Переименование файла ====
 +Переименовывать или перемещать файлы и папки нужно из ''​git''​. Подробнее см. справку.
 +<code bash>
 +$ git mv old_filename new_filename
 +</​code>​
 +
 +==== Объединение коммитов ====
 +  * Объединение последних **2** (//​можно использовать любое разумное целое число//​) коммитов в один: \\
 +<code bash>
 +$ git rebase -i HEAD~2
 +</​code>​
 +    * **Откроется** текстовый редактор,​ в котором первые две строки соответствуют последним двум коммитам.
 +    * В начале каждой строки стоит слово ''​pick''​. Вам **необходимо** изменить слово ''​pick''​ на букву ''​s''​ у второй строки. Это означает,​ что данный коммит будет объединен с предыдущим коммитом -- это написано в комментариях.
 +    * **Сохраните** изменения и закройте редактор.
 +    * Снова **откроется** редактор,​ в котором вам предлагается ввести сообщение к коммиту,​ который и является объединением. Отредактируйте сообщение к коммиту,​ **сохраните** изменения,​ и закройте редактор.
 +
 +==== Разное ====
 +  * ''​git rm FILE1 FILE2''​ -- Удалить файл(ы) из индекса и дерева одновременно.
 +  * ''​git reset''​ -- Сбросить весь индекс. \\ Помимо работы с индексом,​ позволяет сбросить состояние проекта до какого-либо коммита в истории:​
 +    * «Мягкий» (с ключом "​--soft"​) резет оставит нетронутыми ваши индекс и все дерево файлов и директорий проекта,​ вернется к работе с указанным коммитом. \\ ''​git reset --soft HEAD^''​ -- переходим к работе над уже совершенным коммитом,​ сохраняя все состояние проекта и проиндексированные файлы.
 +    * «Жесткий» резет (ключ --hard) — команда,​ которую следует использовать с осторожностью. Git reset --hard вернет дерево проекта и индекс в состояние,​ соответствующее указанному коммиту,​ удалив изменения последующих коммитов. \\ ''​git reset --hard HEAD~3''​ -- Никто и никогда не увидит три последних коммита. ​
 +  * ''​revert''​ -- отмена изменений,​ произведенных в прошлом отдельным коммитом. Для использования команды необходимо,​ чтобы состояние проекта не отличалось от состояния,​ зафиксированного последним коммитом.
 +    * ''​git revert config-modify-tag''​ --  отменяем коммит,​ помеченный тегом.
 +    * ''​git revert 12abacd''​ -- отменяем коммит,​ используя его хэш.
 +  * ''​git log''​ -- Разнообразная информация о коммитах в целом, по отдельным файлам и различной глубины погружения в историю.
 +  * ''​git diff''​ -- Отличия между деревьями проекта;​ коммитами;​ состоянием индекса и каким-либо коммитом.
 +    * ''​git diff ''​ -- Изменения,​ не внесенные в индекс.
 +    * ''​git diff --cached''​ -- Изменения,​ внесенные в индекс.
 +    * ''​git diff HEAD''​ -- Изменения в проекте по сравнению с последним коммитом.
 +    * ''​git diff HEAD^''​ -- Изменения в проекте по сравнению с **пред**последним коммитом.
 +  * ''​git branch''​ -- Создание,​ перечисление и удаление веток ​
 +    * ''​git branch''​ -- Просто перечислит существующие ветки, отметив активную.
 +    * ''​git branch new-branch''​ -- Создаст новую ветку new-branch.
 +    * ''​git branch -d new-branch''​ -- Удалит ветку, если та была залита (merged) с разрешением возможных конфликтов в текущую.
 +    * ''​git branch -D new-branch''​ -- Удалит ветку в любом случае.
 +    * ''​git branch -m new-name-branch''​ -- Переименует ветку.
 +    * ''​git branch --contains v1.2''​ -- Покажет те ветки, среди предков которых есть определенный коммит.
 +  * ''​git checkout''​ -- Переключение между ветками,​ извлечение отдельных файлов из истории коммитов
 +  * ''​git rebase''​ -- Построение ровной линии коммитов ​
 +  * ''​git cherry-pick''​ -- Применение к дереву проекта изменений,​ внесенных отдельным коммитом ​
 +  * ''​git tag''​ -- Тэги как способ пометить уникальный коммит ​
 +  * ''''​ -- 
 +
  
 ==== Удаленный репозиторий ==== ==== Удаленный репозиторий ====
Строка 58: Строка 151:
 В дальнейшем нам потребуется только последний пункт. В дальнейшем нам потребуется только последний пункт.
  
 +===== Полезно =====
 +==== URL ====
 +  * Pro Git book: __git-scm.com/​book/​ru/​v2__
 +  * 30 команд Git: __habr.com/​post/​599929/​__
 +  * Git шпаргалка:​ __pr0git.blogspot.ru/​p/​git.html__
 +  * Курс уроков:​ __www.atlassian.com/​ru/​git/​tutorials__
 +
 +==== Программы ====
 +  * ''​git**g**'':​ __wiki.gnome.org/​Apps/​Gitg__
 +  * ''​git**k**'',​ ''​git **gui**'':​ __git-scm.com/​__
  
subjects/programming/git.1506613412.txt.gz · Последние изменения: 2017/09/28 18:43 —

На главную страницу Обучение Wikipedia Тестирование Контакты Нашли ошибку? Справка

Записаться на занятия

Ошибка Записаться на занятия к репетитору

Телефоны:

  • +7 (910) 874 73 73
  • +7 (905) 194 91 19
  • +7 (831) 247 47 55

Skype: eduVdom.com

закрыть[X]
Наши контакты