Sobes.tech
Junior

Как да обедините няколко комита в един с Git?

sobes.tech AI

Отговор от AI

За да обедините няколко комита в един с помощта на Git, използвайте командата git rebase -i <commit-ish>.

  1. Определете комита, до който искате да обедините. Това може да бъде хеш на комит, клон или таг.
  2. Изпълнете командата git rebase -i <commit-ish>. Например, за да обедините последните 3 комита:
    git rebase -i HEAD~3
    
  3. Ще се отвори текстов редактор със списък на комитите. Първият комит в списъка (горе) трябва да има думата pick. Другите комити, които искате да обедините с първия, трябва да се променят от pick на squash или s.
    pick abcd123 Начален комит
    squash efgh456 Част 1 на функцията A
    squash ijkl789 Част 2 на функцията A
    ...
    
  4. Запазете и затворете редактора.
  5. Ще се отвори нов редактор за създаване на съобщение за комита. Обединете или редактирайте съобщенията на комитите по ваше усмотрение, за да създадете смислено съобщение за новия обединен комит.
    // Съобщение за новия обединен комит
    
    // Това е комбинация от 3 комита.
    
    // Начален комит
    // Част 1 на функцията A
    // Част 2 на функцията A
    
  6. Запазете и затворете редактора. Git ще извърши обединяването на комитите.

Ако клонът, върху който работите, вече е изпратен към отдалечен репозиторий, ще трябва да направите принудително изпращане с флага -f или --force-with-lease.

git push origin <вашият_клон> -f

Това е необходимо, защото историята на комитите е била променена. Принудителното изпращане може да е опасно, ако други разработчици вече работят върху този клон. Винаги проверявайте дали е безопасно да направите принудително изпращане.

Алтернативно, можете да използвате флаговете --fixup и --autosquash при комитване, а след това да изпълните git rebase -i --autosquash <commit-ish> за автоматично обединяване.