Как узнать с помощью git, является ли оригинальный коммит, который был отменен, тем же самым, что и новый рекоммит?

Вопрос или проблема

История коммитов выглядит следующим образом

  1. aaa оригинальный код
  2. bbb изменение
  3. ccc нерелевантное изменение 1
  4. ddd отменённое bbb по какой-то причине
  5. eee нерелевантное изменение 2

Теперь автор кода хочет объединить PR с изменением fff в нем. Автор утверждает, что этот PR просто отменяет ddd – значит, он должен точно вернуть bbb.

Как рецензент PR может проверить, что bbb и fff – это идентичные коммиты (другими словами, не было сделано никаких дальнейших правок, требующих повторной проверки)? Какие команды git мы можем использовать, чтобы проверить это утверждение?

Я нашел этот вопрос Есть ли способ проверить, равны ли содержанием два различных git-коммита?, но эти ответы работают только в том случае, если коммиты находятся в разных ветках или если у вас есть дополнительные не-git инструменты в системе. Мне нужен ответ, который работает на MS Windows без дополнительных инструментов, таких как diff, sed, awk и т.д.

Ответ или решение

Для того чтобы определить, идентичны ли коммиты bbb и fff, нужно выяснить, содержат ли они одни и те же изменения, несмотря на то, что у них разные хеши (идентификаторы). Git позволяет проверять содержимое коммитов с помощью нескольких удобных команд, которые можно использовать на Windows без необходимости установки дополнительных инструментов.

Шаг 1: Получите хеши коммитов

Сначала вам нужно узнать хеши коммитов bbb и fff. Для этого вы можете воспользоваться командой:

git log --oneline

Эта команда покажет список коммитов в однострочном формате, где вы сможете идентифицировать необходимые коммиты и их хеши.

Шаг 2: Сравните содержимое коммитов

Чтобы сравнить содержимое двух коммитов, используйте следующую команду:

git diff <hash_bbb> <hash_fff>

Замените <hash_bbb> и <hash_fff> на соответствующие хеши ваших коммитов. Эта команда покажет различия между содержимым двух коммитов. Если вывод команды пуст, это указывает на то, что коммиты bbb и fff идентичны.

Шаг 3: Дополнительная проверка

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

git show <hash_bbb> > before.txt
git show <hash_fff> > after.txt

Эти команды создадут два файла: before.txt и after.txt, содержащие содержимое соответствующих коммитов. После этого вы сможете произвести сравнение с помощью:

fc before.txt after.txt

Команда fc (file compare) позволяет сравнить два файла на Windows. Если нет различий, то подтверждается, что коммиты идентичны.

Заключение

Используя вышеуказанные команды, PR-ревьювер может убедиться, что изменения, внесённые в коммите fff, полностью идентичны изменениям, внесённым в коммит bbb. Это подтверждает, что никакие дополнительные правки не были сделаны и нет необходимости в повторной проверке кода. Таким образом, вы сможете эффективно и с минимальными усилиями выполнить необходимую проверку.

Оцените материал
Добавить комментарий

Капча загружается...