Git Сравнить две ветки

Git Compare Two Branches



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

C00 => C01 => C03 => C06 (главный)









C02 => C04 => C05 (разработка)



Были предприняты следующие шаги:





  • C00: Добавлен hello_world.py (основная ветка)
  • - Создал ветку разработки
  • C01: изменен hello_world.py для добавления второго приветствия (главная ветка)
  • C02: изменен hello_world.py, чтобы добавить ветку разработки с надписью Hello (ветка разработки)
  • C03: Добавлен readme.txt (основная ветка)
  • C04: изменен hello_world.py, чтобы добавить ветку разработки, снова приветствую (ветвь разработки)
  • C05: Добавлен info.txt (ветка разработки)
  • C06: Изменен readme.txt для добавления второй строки (основная ветка)

После всех коммитов в «главной» ветке будут следующие файлы:

hello_world.py
readme.txt



А в ветке «разработка» есть следующие файлы:

hello_world.py
info.txt


Сравнение голов двух веток

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

$git diffмастер .. разработка

разница --идтик/hello_world.py б/hello_world.py
индекс e27f806..3899ed3100644
---к/hello_world.py
+++ б/hello_world.py
@@-2,7+2,7 @@

def main():
Распечатать(«Первый привет!»)
- Распечатать(«Второй привет!»)
-
+ печать('Ветка разработки передает привет')
+ печать('Ветка разработки снова здоровается')
если__name__ =='__главный__':
главный()
разница --идтик/info.txt b/info.txt
новыйфайлРежим100644
индекс 0000000..0ab52fd
--- /разработчик/нулевой
+++ б/info.txt
@@-0,0+1 @@
+ Новая информация
разница --идтик/readme.txt b/readme.txt
удаленофайлРежим100644
индекс e29c296..0000000
---к/readme.txt
+++/разработчик/нулевой
@@-1,2+0,0 @@
-1Первая строка readme.txt
-2Вторая строка readme.txt

Команда diff рекурсивно просматривает изменения. Он выполнил следующие различия:

diff –git a / hello_world.py b / hello_world.py
diff –git a / info.txt b / info.txt
diff –git a / readme.txt b / readme.txt

Здесь «a» обозначает ветвь «master», а «b» обозначает ветвь разработки. «A» всегда присваивается первому параметру, а «b» - второму параметру. / Dev / null означает, что в ветке нет файла.


Сравнение коммитов

В нашем примере ветка master имеет следующие коммиты:

$git статус
О мастере филиала
ничего не фиксировать, рабочий каталог чист

$git журнал --одна линия
caa0ddd C06: Изменен readme.txt для добавления второй строки(главная ветка)
efaba94 C03: Добавлен readme.txt(главная ветка)
ee60eac C01: изменен hello_world.py для добавления второго приветствия(главная ветка)
22b4bf9 C00: Добавлен hello_world.py(главная ветка)

В ветке разработки есть следующие коммиты:

$git статус
О развитии отрасли
ничего не фиксировать, рабочий каталог чист

$git журнал --одна линия
df3a4ee C05: Добавлен info.txt(ветвь разработки)
0f0abb8 C04: изменен hello_world.py, чтобы добавить ветку разработки, которая снова приветствует(ветвь разработки)
3f611a0 C02: изменен hello_world.py, чтобы добавить ветку разработки с надписью Hello(ветвь разработки)
22b4bf9 C00: Добавлен hello_world.py(главная ветка)

Предположим, мы хотим сравнить hello_world.py для коммитов C01 и C02. Вы можете использовать хеши для сравнения:

$git diffee60eac: hello_world.py 3f611a0: hello_world.py

разница --идтик/ee60eac: hello_world.py b/3f611a0: hello_world.py
индекс e27f806..72a178d100644
---к/ee60eac: hello_world.py
+++ б/3f611a0: hello_world.py
@@-2,7+2,7 @@

def main():
Распечатать(«Первый привет!»)
- Распечатать(«Второй привет!»)
+ печать('Ветка разработки передает привет')

если__name__ =='__главный__':
главный()

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


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

Глядя на текстовые сравнения, бывает сложно. Если вы настроили Git difftool с приложением визуального слияния, например DiffMerge или Вне всякого сравнения , вы сможете лучше увидеть различия.

Дальнейшее изучение:

Использованная литература: