Skip to content

Cum să faci rebase în Git — Ghid complet

DodaTech Updated 2025-01-15 3 min read

In this tutorial, you'll learn about Cum să faci rebase în Git. We cover key concepts, practical examples, and best practices.

În acest ghid vei învăța cum să folosești git rebase, interactive rebase și --onto pentru a menține un istoric linear și curat al commit-urilor.

The Problem

Commit-urile de tip "WIP", "fix" sau "update" aglomerează istoricul și fac revizuirea codului dificilă. Rebase-ul îți permite să rescrii istoricul pentru a-l face clar și logic.

The Wrong Way

git pull
# apare un merge commit inutil în istoric
git log --oneline
# 1a2b Merge branch 'main' of origin
# 3c4d feat: adauga ceva
# 5e6f Merge branch 'main' of origin

Merge commit-urile frecvente aglomerează istoricul și îl fac greu de urmărit.

The Right Way

# Rebase pe main
git checkout feature
git rebase main

# Interactive rebase
git rebase -i HEAD~3

# Rebase cu --onto
git rebase --onto main feature feature-sub

Step-by-Step Fix

1. Rebase simplu pe un branch

Rescrie commit-urile branch-ului tău deasupra altui branch:

git checkout feature
git rebase main

Output:

Successfully rebased and updated refs/heads/feature.

2. Interactive rebase (rebase -i)

Combină, editează sau reordonează commit-uri:

git rebase -i HEAD~3

Se deschide un editor cu următoarele opțiuni:

pick a1b2c3 feat: adauga login
pick d4e5f6 fix: typo in login
pick g7h8i9 feat: finalizeaza login

# Comenzi:
# p, pick = folosește commit-ul
# r, reword = modifică mesajul
# s, squash = combină cu commit-ul anterior
# d, drop = șterge commit-ul

3. Rebase cu --onto

Mută commit-urile de pe un branch pe altul:

git rebase --onto main feature-base feature-target

Acest lucru mută commit-urile din feature-target care nu sunt în feature-base direct pe main.

4. Rebase în loc de merge la pull

git pull --rebase

Sau configurează ca comportament implicit:

git config --global pull.rebase true

Prevention Tips

  • Nu face rebase pe branch-uri publice la care lucrează și alții
  • Folosește interactive rebase pentru a curăța commit-urile înainte de pull request
  • Fă rebase des (zilnic) pentru a minimiza conflictele
  • După rebase, s-ar putea să ai nevoie de git push --force-with-lease
  • Verifică întotdeauna cu git log înainte și după rebase

Common Mistakes

  1. Rebase pe branch-uri publice — rescrie istoricul și cauzează haos pentru ceilalți dezvoltatori
  2. Forget să faci rebase înainte de pull request — duce la conflicte greu de rezolvat
  3. Squash excesiv — pierzi contextul commit-urilor individuale
  4. Confuzia între merge și rebase — ambele integrează schimbări, dar rescriu istoricul diferit

Aceste greșeli apar frecvent în lucrul cu Git. Contribuitorii DodaTech le-au identificat prin analiza proiectelor open-source și a sistemelor de producție.

Practice Exercise

Exercițiu: Creează 4 commit-uri pe un branch, apoi folosește git rebase -i HEAD~4 pentru a squasha ultimele 2 și a redenumi unul.

FAQ

### Ce diferență este între git rebase și git merge?

Merge creează un commit de fuzionare care păstrează istoricul ramurilor. Rebase rescrie commit-urile branch-ului tău deasupra altui branch, creând un istoric linear fără commit-uri de merge.

Ce înseamnă git rebase -i?

git rebase -i (interactive) deschide un editor care îți permite să modifici, combini, reordonezi sau ștergi commit-uri. Este util pentru a curăța istoricul înainte de a face push sau pull request.

Când ar trebui să folosesc git rebase --onto?

--onto este util când ai un branch care a fost creat din alt branch și vrei să muți commit-urile pe o bază diferită. De exemplu, când un branch de feature a fost creat din alt feature și vrei să-l muti pe main.

Construit de dezvoltatorii Doda Browser, DodaZIP și Durga Antivirus Pro. Uneltele DodaTech se integrează perfect cu Git pentru productivitate și securitate sporite.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro