Belirli commit geri
- Git kursu
- Orta seviye
- Ders 39/82
- 4 dk
Belirli bir commit'i geri almayı öğrenirsin.
Geçmişteki belirli bir commit'i revert etme
git revert, yalnızca en son commit'i (HEAD) değil, geçmişteki herhangi bir commit'i de geri alabilir. Arada başka commit'ler yapılmış olsa bile Git, yalnızca hedef commit'in getirdiği satırları tespit edip onların tersini uygular. Hedef commit'in referansını veya hash değerini komuta parametre olarak verirsin.
# Gecmisteki belirli bir commit'i geri al:
git revert --no-edit 7b2a9c1
git revert --no-edit HEAD~1Bu seçici yaklaşım, aradaki faydalı geliştirmeleri kaybetmeden eski bir hatayı ayıklamanı sağlar.
Revert sırasında çakışmalar
Geri alınmak istenen commit'in değiştirdiği satırlar sonraki commit'lerde tekrar düzenlendiyse bir çakışma (conflict) ortaya çıkabilir. Çakışma çıktığında dosyaları düzenleyip git add ile sahneledikten sonra git revert --continue komutuyla işlemi tamamlarsın. Vazgeçmek istersen git revert --abort komutuyla depoyu geri alabilirsin.
# Cakismayi cozup devam et:
git add dosya.txt
git revert --continue
# Islemi tamamen iptal et:
git revert --abortBu esneklik, karmaşık geri alma operasyonlarını güvenle yönetmeni sağlar.
Uygulama Geçmişteki commit'i geri al
HEAD~1 commit'ini git revert --no-edit -q HEAD~1 komutuyla geri al ve son commit başlığını git log -1 --format="%s" ile ekrana yazdır.
Başlangıç kodu
git init -q -b main
git config user.name "Bahar"
git config user.email "bahar@example.com"
echo "a" > a.txt
git add a.txt
git commit -qm "A eklendi"
echo "b" > b.txt
git add b.txt
git commit -qm "B eklendi"
echo "c" > c.txt
git add c.txt
git commit -qm "C eklendi"
# HEAD~1 commit'ini revert et ve son basligi yazdirÖrnek çözüm
git init -q -b main
git config user.name "Bahar"
git config user.email "bahar@example.com"
echo "a" > a.txt
git add a.txt
git commit -qm "A eklendi"
echo "b" > b.txt
git add b.txt
git commit -qm "B eklendi"
echo "c" > c.txt
git add c.txt
git commit -qm "C eklendi"
git revert --no-edit -q HEAD~1
git log -1 --format="%s"Beklenen çıktı
Revert "B eklendi"
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Aradan birkaç commit geçtikten sonra geçmişteki belirli bir commit'i geri almak istediğinde ne yaparsın?
- İlgili commit'in hash değerini git revert komutuna parametre verirsin Doğru cevap
- .git klasöründeki geçmiş commit dosyasını elle silersin
- git stash drop komutuyla geçmişteki commit'i yığından silersin
- Depoyu git reset --hard ile o commit'e sıfırlayıp aradaki işleri silersin
Açıklama: git revert <hash>, aradaki diğer commit'lere dokunmadan yalnızca belirtilen commit'in değişikliklerini tersine çeviren yeni bir commit üretir.
2 Revert işleminden vazgeç
git revert ____
git revert --abort
Açıklama: --abort seçeneği, devam eden revert sürecini iptal eder ve depoyu revert başlamadan önceki haline döndürür.
3 Commit geri alma komutları
| Kavram | Anlamı |
|---|---|
git revert <hash> |
Belirtilen commit'i tersine çevirir |
--continue |
Çakışma çözülünce revert'i tamamlar |
--abort |
Revert işlemini iptal eder |
Seçici geri alma |
Aradaki commit'lere dokunmaz |