Почти все системы контроля версий имеют варианты ветвления. Но Git известен своими возможностями быстрого перехода. Ветви Git легкие. Таким образом, потери производительности за ветвление минимальны, и командам разработчиков рекомендуется как можно больше разветвлять и объединять. Но когда вы работаете с несколькими ветвями, важно иметь возможность сравнивать и противопоставлять различия. В этом руководстве мы рассмотрим рабочий процесс, чтобы увидеть, как мы можем сравнивать различные ветки и коммиты.Давайте сначала создадим следующую ситуацию:
C00 => C01 => C03 => C06 (главный)
\
C02 => C04 => C05 (разработка)
Были предприняты следующие шаги:
- C00: Добавлен hello_world.py (основная ветка)
- - Создал ветку разработки
- C01: Изменено hello_world.py, чтобы добавить второе приветствие (главная ветка)
- C02: Изменено hello_world.py, чтобы добавить ветку разработки, говорит привет (ветка разработки)
- C03: Добавлен readme.txt (основная ветка)
- C04: Изменено hello_world.py, чтобы добавить ветку разработки, снова приветствует (ветвь разработки)
- C05: Добавлена информация.txt (ветка разработки)
- C06: измененный файл readme.txt, чтобы добавить вторую строку (основная ветка)
После всех коммитов в ветке master будут следующие файлы:
Привет мир.ру
Прочти меня.текст
А в ветке «разработка» есть следующие файлы:
Привет мир.ру
Информация.текст
Сравнение голов двух веток
Вы можете использовать названия веток для сравнения голов двух ветвей:
$ git diff master… разработкаdiff --git a / hello_world.py b / hello_world.ру
индекс e27f806… 3899ed3 100644
--- а / hello_world.ру
+++ б / hello_world.ру
@@ -2,7 +2,7 @@
def main ():
print ("Первый привет!")
- print ("Второй привет!")
-
+ print ("Ветвь разработки приветствует")
+ print ("Ветвь разработки снова приветствует")
если __name__ == "__main__":
основной()
diff --git a / info.txt b / info.текст
новый файловый режим 100644
индекс 0000000… 0ab52fd
--- / dev / null
+++ б / информация.текст
@@ -0,0 +1 @@
+Новая информация
diff --git a / readme.txt b / readme.текст
режим удаленного файла 100644
индекс e29c296… 0000000
--- a / readme.текст
+++ / dev / null
@@ -1,2 +0,0 @@
-1 Первая строка ридми.текст
-2 Вторая строка ридми.текст
Команда diff рекурсивно просматривает изменения. Он выполнил следующие различия:
diff -git a / hello_world.py b / hello_world.ру
diff -git a / info.txt b / info.текст
diff -git a / readme.txt b / readme.текст
Здесь «a» обозначает ветвь «master», а «b» обозначает ветвь разработки. Буква «a» всегда присваивается первому параметру, а буква «b» - второму параметру. / Dev / null означает, что в ветке нет файла.
Сравнение коммитов
В нашем примере ветка master имеет следующие коммиты:
$ git statusО мастере филиала
ничего не фиксировать, рабочий каталог чист
$ git log --oneline
caa0ddd C06: измененный файл readme.txt, чтобы добавить вторую строку (основная ветка)
efaba94 C03: Добавлен ридми.txt (основная ветка)
ee60eac C01: Изменено hello_world.py, чтобы добавить второе приветствие (главная ветка)
22b4bf9 C00: Добавлен hello_world.py (основная ветка)
В ветке разработки есть следующие коммиты:
$ git statusО развитии отрасли
ничего не фиксировать, рабочий каталог чист
$ git log --oneline
df3a4ee C05: Добавлена информация.txt (ветка разработки)
0f0abb8 C04: Изменено hello_world.py, чтобы добавить ветку разработки, снова приветствует (ветка разработки)
3f611a0 C02: Изменено hello_world.py, чтобы добавить ветку разработки, говорит привет (ветка разработки)
22b4bf9 C00: Добавлен hello_world.py (основная ветка)
Предположим, мы хотим сравнить hello_world.py для коммитов C01 и C02. Вы можете использовать хеши для сравнения:
$ git diff ee60eac: hello_world.py 3f611a0: hello_world.руdiff --git a / ee60eac: hello_world.py b / 3f611a0: hello_world.ру
индекс e27f806… 72a178d 100644
--- a / ee60eac: hello_world.ру
+++ b / 3f611a0: hello_world.ру
@@ -2,7 +2,7 @@
def main ():
print ("Первый привет!")
- print ("Второй привет!")
+ print ("Ветвь разработки приветствует")
если __name__ == "__main__":
основной()
Вы можете использовать тот же принцип для сравнения коммитов в одной и той же ветке.
Инструменты визуального слияния
Глядя на текстовые сравнения, может быть сложно. Если вы настроите Git difftool с приложением визуального слияния, например DiffMerge или BeyondCompare, вы сможете лучше видеть различия.
Дальнейшее изучение:
- Документация Git Diff
- Документация Git DiffTool
- Настройка DiffMerge с помощью DiffTool
- Настройка BeyondCompare с помощью DiffTool
Рекомендации:
- Учебное пособие по Git: инструменты различения и слияния, YouTube
- http: // coding4streetcred.com / blog / post / configure-diffmerge-for-your-git-difftool
- http: // gitbaby.com / how-to-diff-one-file-to-an-random-version-in-git.html
- https: // git-scm.com / book / en / v2 / Git-Branching-Basic-Branch-and-Merging
- https: // git-scm.com / book / id / v2 / Git-Branching-Branches-in-a-Nutshell
- https: // git-scm.com / docs / git-diff
- https: // git-scm.com / docs / git-difftool
- https: // sourcegear.com / diffmerge /
- https: // sourcegear.com / diffmerge / webhelp / sec__git__linux.html
- https: // stackoverflow.com / questions / 9834689 / сравнение-две-ветки-в-git
- https: // veerasundar.com / blog / 2011/06 / git-tutorial-comparing-files-with-diff /
- https: // www.скутеры.com / features.php
- https: // www.скутеры.com / support.php?zz = kb_vcs