Sobes.tech
Junior

Ako zlúčiť viac commitov do jedného pomocou Git?

sobes.tech AI

Odpoveď od AI

Ak chcete spojiť viacero commitov do jedného pomocou Git, použite príkaz git rebase -i <commit-ish>.

  1. Určite commit, ku ktorému chcete spojiť. Môže to byť hash commit, vetva alebo tag.
  2. Spustite príkaz git rebase -i <commit-ish>. Napríklad, pre spojenie posledných 3 commitov:
    git rebase -i HEAD~3
    
  3. Otvorí sa textový editor so zoznamom commitov. Prvý commit v zozname (hore) by mal mať slovo pick. Ostatné commity, ktoré chcete spojiť s prvým, zmeňte z pick na squash alebo s.
    pick abcd123 Počiatočný commit
    squash efgh456 Časť 1 funkcie A
    squash ijkl789 Časť 2 funkcie A
    ...
    
  4. Uložte a zatvorte editor.
  5. Otvorí sa nový editor na vytvorenie správy commit-u. Kombinujte alebo upravte správy commit-ov podľa vlastného uváženia, aby ste vytvorili zmysluplnú správu pre nový spojiť commit.
    // Správa pre nový spojiť commit
    
    // Toto je kombinácia 3 commitov.
    
    // Počiatočný commit
    // Časť 1 funkcie A
    // Časť 2 funkcie A
    
  6. Uložte a zatvorte editor. Git vykoná spojenie commit-ov.

Ak je vetva, na ktorej pracujete, už odoslaná do vzdialeného repozitára, budete musieť vykonať nútený push s príznakom -f alebo --force-with-lease.

git push origin <vaša_vetva> -f

Toto je potrebné, pretože história commit-ov bola zmenená. Nútený push môže byť nebezpečný, ak na tejto vetve už pracujú iní vývojári. Vždy overte, či je možné vykonať nútený push na tejto vetve.

Alternatívne môžete použiť príznaky --fixup a --autosquash pri commitoch a potom spustiť git rebase -i --autosquash <commit-ish> na automatické spojenie.