Русский
Русский
English
Статистика
Реклама

Из песочницы Git compare быстрый способ сравнить две ветки

Сегодня я хочу поделиться с вами небольшим bash-скриптом, который я успешно использую уже в течение нескольких лет.


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


В результате локальная ветка законченной задачи выглядит примерно так:


image


Наступает следующий этап:


1) Все коммиты из задачи объединяются в один большой (feature-all-private на картинке)


image


2) Этот большой коммит разбивается на аккуратные коммиты с внятными описаниями (feature-public на картинке):


image


Проблема: во время разбития коммитов я обычно провожу легкий рефекторинг, меняю коммиты местами и прочее, что потенциально может привести к незапланированным изменениям в коде (что-то потерялось при ребейзе или разрешении конфликтов, например)


image


Решение: в гите на тот момент не было инструмента быстро сравнить содержимое двух веток, поэтому я решил написать небольшой скрипт git-cmp
Инструкция по установке достаточно простая нужно локально сохранить bash-скрипт и добавить алиас в гите.
Теперь мы можем одной командой сравнить "рабочую" версию задачи (feature-private) с конечной "публикуемой" версией (feature-public):


git checkout feature-publicgit cmp feature-private

Вывод которой покажет, что либо изменений нет и ветки идентичны:


 $ git cmp feature-private                                                       common parent commit: 758d3fa                  cleaning...                                                                     ...done

Либо изменения есть и они будут показаны с использованием git-diff:


 $ git cmp feature-privatecommon parent commit: 758d3fadiff --git a/test.txt b/test.txtindex 1e65656..2013c09 100644--- a/test.txt+++ b/test.txt@@ -1,4 +1,4 @@-oldLine+newLinecleaning......done

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


image


Надеюсь, этот скрипт будет полезен кому-то еще
Исходники выложены на гитхабе
Картинки были созданы с помощью codepen.io

Источник: habr.com
К списку статей
Опубликовано: 24.09.2020 12:15:14
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Git

Tutorial

Bash scripting

Git-cmp

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru