7.1 Git – Слияние – 'Истинное' слияние и разрешение конфликтов в git merge

preview_player
Показать описание
- Процесс слияния веток и файлов при помощи git merge.
- Конфликты и их разрешение.
Рекомендации по теме
Комментарии
Автор

очень достойно: визуальное объяснение тащит

liliyasiadzelnikava
Автор

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

Ecto-Gamet
Автор

Спасибо тебе огромное! Это лучший курс по git

dkdikbh
Автор

без воды и много доп. информации. спасибо!

nmdsoft
Автор

1:22 Истинное слияние
2:28 Git merge-base [название веток через пробел] - чтобы увидеть последнего общего предка заданных веток
2:38 сравнение трех версий файлов (base + ours + theirs) -> merge
3:25 Прерванное слияние (конфликт)
4:51 общее правило слияния, если конфликта нет (в одном файле были изменения, а в другом нет)
5:28 если есть конфликт (изменения были в обоих файлах)
6:36 одни и те же строки файла в разных ветках изменены по разному
6:46 какие-то изменения удалось объединить, а какие-то нет
6:58 Флаг -U, чтобы укоротить вывод - указывает максимальное число строк в контексте (вокруг изменений). По умолчанию - 3
8:03 отображение конфликта в редакторе
8:55 git checkout --ours [путь к файлу] - оставляет вариант и текущей ветки
9:07 git checkout --theirs [путь к файлу] - оставляет вариант и другой ветки
9:19 git checkout --merge [путь к файлу] - снова отобразит версию с маркерами конфликта
9:30 вернуть все как было:
9:36 через git reset --hard
9:48 через git reset --merge (более аккуратный возврат)
9:59 наглядный пример 10:37
11:18 git merge --abort (аналог git reset --merge)
11:42 git checkout --conflict=diff3 --merge [файл] (выводит также информацию из последнего общего для веток коммита серым цветом)
12:25 установить такой способ представления глобально по умолчанию (git config --global merge.conflictStyle diff3)
12:53 причина, по которой git "не видит" изменений после устранения лишних строк вручную. Чтобы "увидел" нужно добавить в индекс.
13:03 информация в индексе при конфликте сразу о трех версиях файла. 13:12 показ в трех колонках. git show :[номер стадии]:[файл]
13:52 git merge --continue - псевдоним комманды git commit (для красоты). 14:13 в редакторе

izsjnnq
Автор

Когда у меня возникают проблемы с гитом, я бегу к Илье!

viktoryakovenko
Автор

Спасибо большое, очень полезная информация

wardxela
Автор

$git merge-base master feature
2:19 > SHA-commit
$git merge master feature
3:25 > Conflict (ours theirs) ?!
$git merge --abort
9:30 > Abort merge
$git show :0:index.html
12:38 > Show preparing merge

michal
Автор

1:52 - тут не понятно... почему git diff говорит о том что нет незакомиченных изменений в выведенных файлах? разве если передать diff-у две ветки (как в видео), он не сравнит *лишь закомиченные* изменения на которые указывает HEAD обеих веток?
diff ведь показывает наличие изменений в рабочей директории при командах на подобе git diff или git diff HEAD, а тут нежданчик - команда git diff --name-only master fearure говорит что "незакоммиченных изменений в выведенных файлах нет"...
Что я упускаю? Хэлп))

andreipalii
Автор

10:37 - так ведь и слияние ветки в данном случае не получится, ведь Гит предупредит сказав что локальные изменения (рабочая директория + индекс) будут *перезаписаны* слиянием, предложив сперва добавить изменения в стэш либо закоммитить их.
М-да, первый урок когда что-то не могу понять. Подскажите где я упускаю что-то или где я не прав.

andreipalii
Автор

А как закрыть редактор, если он открывается в консоли?

Kotsik
Автор

фичер... прикольно... фича, депача, литреча, фьюча и т.д.

timurkash
Автор

Гит слияние — это тебе не «трах-бах и всё готово». Это тебе не «собрались и разбежались». Тут всё гораздо глубже! А то, что вы тут устроили, не имеет ничего общего с истинным слиянием! Тупой выпендреж.
(Камина)

xeleos