Полный цикл в digital

Коммиты Git

Команда git commit откроет текстовый редактор для ввода сообщения коммита. Представим, что нам нужно добавить новый блок в html-разметку и стилизовать в файле style.css. Для сохранения изменений, их необходимо закоммитить. Но сначала, нужно обозначить эти файлы для Git, при помощи команды git add.

История коммитов log

Посмотреть на историю коммитов в ветке:

git log

Посмотреть коммиты в указанной ветке:

git log название_ветки

Доступные опции:

  • -p показывает изменения в каждом коммите
  • --stat показывает сокращённую статистику для коммитов, например изменённые файлы и количество добавленных/удалённых строк в каждом их них
  • -n показывает n последних коммитов
  • -since="дата" позволяет отфильтровать коммиты по промежутку времени, например --since="2019-01-01" покажет коммиты с 1 января 2019 года
  • --until="дата" позволяет отфильтровать коммиты по промежутку времени, например --until="2019-01-01" покажет коммиты после 1 января 2019 года

Создание коммита commit

Создать новый коммит:

git commit -m "название_комита"

Доступные опции:

  • -m позволяет написать название коммита с командой, не открывая редактор
  • -a переносит все отслеживаемые файлы в область подготовленных файлов и включает их в коммит, позволяет пропустить git add перед коммитом
  • --amend заменяет последний коммит новым изменённым коммитом, что бывает полезно, если вы неправильно набрали сообщение последнего коммита или забыли включить в него какие-то файлы

Переключение на другой коммит checkout

Переключение на нужный коммит:

git checkout хеш_коммита

Создать ветку new-branch, начинающуюся с коммита c хешем 5589877, переместить HEAD на указанный коммит а рабочую директорию вернуть к состоянию на момент этого коммита, создать указатель на этот коммит (ветку) с указанным именем:

git checkout -b new-branch 5589877

Восстановить в рабочей директории указанный файл на момент указанного коммита и добавить это изменение в индекс:

git checkout хеш_коммита название_файла

Копирование коммитов cherry-pick

Скопировать на активную ветку изменения из указанного коммита, закоммитить эти изменения:

git cherry-pick хеш_коммита

Скопировать на активную ветку изменения из master, 2 последних коммита:

git cherry-pick master~2..master

Скопировать на активную ветку изменения из указанного коммита, но НЕ КОММИТИТЬ! Подразумевается, что мы сами потом закоммитим:

git cherry-pick -n хеш_коммита

Скопировать на активную ветку изменения из всех коммитов ветки feature с момента её расхождения с master (похоже на слияние веток, но это копирование изменений а не слияние), закоммитить эти изменения (возможен конфликт):

git cherry-pick master..feature

Прервать конфликтный перенос коммитов:

git cherry-pick –abort

Продолжить конфликтный перенос коммитов, сработает только после решения конфликта:

git cherry-pick –continue

Удалить незакомиченные изменения

Если требуется удалить все свои незакомиченные изменения, которые ещё не индексировались командой git add. При этом появится ещё одно состояние проекта карман:

git stash save --keep-index

Если карман не нужен, его можно удалить:

git stash drop

Удалить все индексированные и неиндексированные изменения:

git stash save

Вернуть все обратно:

git stash apply

Удаление коммита

Единственный безопасный способ удалить коммит, это отменить его действие но при этом оставить информацию о коммите в истории. который по сути останется пустой. Такой способ обычно используется в публичных ветвях, где изменение истории недопустимо:

git revert хеш_коммита

Исправление статуса detached HEAD у коммита

Если коммит находится вне ветки, о чем говорит статус detached HEAD, тогда коммит нужно вернуть в рабочую ветку, с которой дальше будем продолжать работать.

Создаем новую ветку на которую будет указывать HEAD и куда автоматически попадет вневеточный коммит:

git branch название_ветки

Переключаемся на нужную ветку в которой будем продолжать работать, чаще это ветка master:

git checkout название_ветки

Вливаем созданную ветку в текущую которую оставляем главной:

git merge название_ветки

Восстановление потерянных коммитов

Использование reflog будет работать в течение определенного времени после потери коммитов. Git периодически очищает рефлог.

Первым шагом к восстановлению потерянных коммитов, является восстановление списка всех предыдущих коммитов и действий, выполненных в репозитории:

git reflog

В выводе необходимо найти хэш нужного коммита который хотите восстановить. Для востановления используется следующая команда:

git cherry-pick хеш_коммита

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг