Git
sammanslagning
Sök…
Syntax
- git merge another_branch [alternativ]
- git merge - abort
parametrar
Parameter | detaljer |
---|---|
-m | Meddelande som ska ingå i sammanslagningen begå |
-v | Visa ordförande utgång |
--abort | Försök att återställa alla filer till sitt tillstånd |
--ff-only | Avbryter omedelbart när ett sammanslagningsåtagande skulle krävas |
--no-ff | Tvingar skapandet av en sammanslagning-åtagande, även om det inte var obligatoriskt |
--no-commit | Låtsas om att sammanslagningen inte tillät inspektion och finjustering av resultatet |
--stat | Visa en diffstat efter att fusionen har slutförts |
-n / - --no-stat | Visa inte diffstat |
--squash | Tillåter en enda åtagande för den nuvarande grenen med de sammanslagna ändringarna |
Slå samman en gren i en annan
git merge incomingBranch
Detta sammanfogar grenen incomingBranch
till den gren du för närvarande är i. Om du till exempel befinner dig i master
, kommer incomingBranch
att slås samman till master
.
Sammanfogning kan skapa konflikter i vissa fall. Om detta händer ser du meddelandet Automatic merge failed; fix conflicts and then commit the result.
Du måste redigera de konflikterade filerna manuellt, eller för att ångra ditt fusionsförsök, kör:
git merge --abort
Automatisk sammanslagning
När åtagandena på två grenar inte strider kan Git automatiskt slå samman dem:
~/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(-)
Avbryta en sammanslagning
När du har startat en sammanslagning kanske du vill stoppa sammanslagningen och återställa allt till dess sammanslagningstillstånd. Använd - --abort
:
git merge --abort
Håll ändringar från endast en sida av en sammanslagning
Under en sammanslagning kan du passera --ours
eller - för att --theirs
till git checkout
att göra alla ändringar för en fil från ena sidan eller den andra av en sammanslagning.
$ 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
Slå samman med en åtagande
Standardbeteende är när sammanslagningen löses som en snabbspolning, bara uppdatera grenpekaren utan att skapa en sammanslagningskombination. Använd --no-ff
att lösa.
git merge <branch_name> --no-ff -m "<commit message>"
Hitta alla grenar utan sammanslagna förändringar
Ibland kanske du har grenar som ligger runt som redan har fått sina förändringar samman till master. Detta hittar alla grenar som inte är master
som inte har några unika åtaganden jämfört med master
. Detta är mycket användbart för att hitta grenar som inte raderades efter att PR slogs samman till 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