Sobes.tech
Middle

Mi a különbség a merge és rebase parancsok között a Git verziókezelő rendszerben?

sobes.tech MI

Válasz az MI-től

A merge két ágat egyesít úgy, hogy létrehoz egy új commitot két szülővel, megőrizve a változások történetét. A rebase egy ág commitjait egy másik fölé helyezi át, lineárissá téve a történelmet, de megváltoztatva a commitok hash-ét.

  • A merge esetén:

    • Egy új egyesítési commit jön létre.
    • Az ágak története nyilvánvaló marad.
    • Konfliktusok léphetnek fel, melyeket az új commitban oldanak meg.
    # Merge példa
    git checkout feature-branch
    git merge main
    # Konfliktusok megoldása, ha vannak
    git commit -m "main összevonása feature-branch-be"
    
  • A rebase esetén:

    • A commitok "átkerülnek" és az célág fölé kerülnek.
    • A történet lineáris lesz, talán "tisztabb" kinézetű.
    • A költözött commitok hash-értékei megváltoznak.
    • Konfliktus léphet fel minden költözött commitnál.
    • Nem ajánlott már publikált és más fejlesztők által használt ágakhoz, mivel megváltoztatja a történelmet.
    # rebase példa
    git checkout feature-branch
    git rebase main
    # Konfliktusok megoldása, ha vannak (ismételd minden konfliktusos commitnál)
    git add .
    git rebase --continue
    # vagy git rebase --skip a commit kihagyásához
    # vagy git rebase --abort a megszakításhoz
    
Jellemző merge rebase
Történet módosítása Megőrzi a történelmet Módosítja a történelmet (felülírja)
Commitok Létrehoz egy merge-commit Áthelyezi a meglévő commitokat
Lineáris történet Nem (ágak elágaznak) Igen (egyszerűsíti a történelmet)
Megközelítés Nem destruktív Potenciálisan destruktív
Alkalmazhatóság Nyilvános, közös ágak Helyi, személyes ágak