Git
Samenvoegen
Zoeken…
Syntaxis
- git merge another_branch [opties]
- git samenvoegen - afbreken
parameters
Parameter | Details |
---|---|
-m | Bericht dat moet worden opgenomen in de merge-commit |
-v | Uitgebreide uitvoer weergeven |
--abort | Probeer alle bestanden terug te zetten naar hun staat |
--ff-only | Wordt onmiddellijk afgebroken wanneer een merge-commit nodig zou zijn |
--no-ff | Forceert het maken van een merge-commit, zelfs als het niet verplicht was |
--no-commit | Doet alsof de samenvoeging het inspecteren en tweaken van het resultaat niet toestond |
--stat | Toon een diffstat nadat het samenvoegen is voltooid |
-n / --no-stat | Laat de diffstat niet zien |
--squash | Staat een enkele commit toe op de huidige branch met de samengevoegde wijzigingen |
Voeg een tak in een andere samen
git merge incomingBranch
Dit voegt de tak incomingBranch
in de branche waarin u zich bevindt. Bijvoorbeeld, als u op dit moment in master
, dan incomingBranch
zullen worden samengevoegd tot master
.
Samenvoegen kan in sommige gevallen conflicten veroorzaken. Als dit gebeurt, ziet u het bericht Automatic merge failed; fix conflicts and then commit the result.
U moet de conflicterende bestanden handmatig bewerken of, om uw samenvoegpoging ongedaan te maken, uitvoeren:
git merge --abort
Automatisch samenvoegen
Wanneer de commits op twee branches niet conflicteren, kan Git ze automatisch samenvoegen:
~/Stack Overflow(branch:master) » git merge another_branch
Auto-merging file_a
Merge made by the 'recursive' strategy.
file_a | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Een samenvoeging afbreken
Na het starten van een samenvoeging wilt u misschien de samenvoeging stoppen en alles terugbrengen naar de pre-samenvoegstatus. Gebruik --abort
:
git merge --abort
Houd wijzigingen aan slechts één kant van een samenvoeging
Tijdens een merge, kunt u doorgeven --ours
of --theirs
om git checkout
om alle wijzigingen voor een bestand van de ene of de andere kant van een fusie te nemen.
$ git checkout --ours -- file1.txt # Use our version of file1, delete all their changes
$ git checkout --theirs -- file2.txt # Use their version of file2, delete all our changes
Samenvoegen met een commit
Standaardgedrag is wanneer de samenvoeging wordt opgelost als een fast-forward, alleen de branch pointer bijwerken, zonder een merge commit te maken. Gebruik --no-ff
om op te lossen.
git merge <branch_name> --no-ff -m "<commit message>"
Alle takken vinden zonder samengevoegde wijzigingen
Soms heb je takken rondslingeren waarvan de wijzigingen al zijn samengevoegd tot master. Dit vindt alle branches die geen master
die geen unieke commits hebben in vergelijking met master
. Dit is erg handig voor het vinden van branches die niet zijn verwijderd nadat de PR was samengevoegd in master.
for branch in $(git branch -r) ; do
[ "${branch}" != "origin/master" ] && [ $(git diff master...${branch} | wc -l) -eq 0 ] && echo -e `git show --pretty=format:"%ci %cr" $branch | head -n 1`\\t$branch
done | sort -r