[[oktatas:programozas:verziokontroll:git|< Git]]
====== Összefésülés ======
* **Szerző:** Sallai András
* Copyright (c) 2020, Sallai András
* Szerkesztve: 2020, 2021, 2023, 2024
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== A merge =====
Összefésülés után a master ág kisimul, tiszta lesz,
úgynevezett **fast forward merge** történik, alapértelmezetten.
A devel1 ágnak nyoma sincs ilyen formában.
Ha szeretnénk, hogy megmaradjon az ág, vagyis a fast forwardot szeretnénk elkerülni, akkor használjuk
a --no-ff kapcsolót.
{{:oktatas:programozas:verziokontroll:fejlesztes_beepitese_01.png|}}
git merge --no-ff devel1
===== A rebase =====
A összefésülés megoldható a rebase paranccsal is, de csak abban az esetben,
ha mások nem fejlesztenek erre az ágra.
git rebase devel1
===== Konfliktuskezelő beállítása =====
A konfliktusok kezelhetők szimpla szövegszerkesztőben is.
A kódfejlesztők, mint a VSCode is biztosítanak konfliktuskezelést.
De telepíthetünk kifejezetten erre a célra létrehozott szoftvert is,
mint a Meld.
Telepítsünk Meld konfliktuskezelőt:
choco install meld
Vagy a Vimdiff:
choco install vim
A Meld beállítása:
git config merge.tool meld
Vagy a vimdiff beállítása:
git config merge.tool vimdiff
A megjelenítés stílusának beállítása:
git config merge.conflictstyle diff3
A konfliktuskezelő előtt a prompt megjelenítése:
git config mergetool.prompt false
===== Első összefésülés =====
Ha ugyanazon az ágon többen is dolgozunk, a git pull utasítás előtt meg kell határoznunk
hogy szeretnénk összefésülni.
Az összefésülés módjainak választására figyelmeztetés kapunk:
hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint:
hint: git config pull.rebase false # merge
hint: git config pull.rebase true # rebase
hint: git config pull.ff only # fast-forward only
hint:
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
fatal: Need to specify how to reconcile divergent branches.
Az első az ajánlott:
git config pull.rebase false # merge
===== Lásd még =====
* https://www.freecodecamp.org/news/compare-two-files-in-linux-using-vim/
* https://www.tutorialspoint.com/vim/vim_diff.htm