Git Commit’lerini Başka Branch’e Aktarmak
Bu yazıda git commit’lerinizi başka bir branch’e nasıl taşıyabileceğinizden bahsedeceğim.
--
Bazen dikkatsizlik veya yanlış anlaşılmalardan dolayı özelliklerimizi yanlış branch üzerinde geliştirebiliriz. Böyle bir durumda yanlış branch üzerindeki commit’leri doğrusuna aktarma ihtiyacı doğar. Bunu yapabilmenizin bazı yöntemleri var. Bu yazıda bunlardan bir tanesini anlatacağım. O da cherry-pick…
Cherry Pick
Cherry-pick, bir branch’teki commit’i alıp diğer bir branch’e uygulamak için kullanılır. Bunu nasıl yapacağımıza bir bakalım;
Şimdi diyelim ki development branch’inde atamanız gereken commit’i yanlışlıkla master branch’inde attınız. Yaptığınız bu hatadan dolayı master’daki commit’inizi development’a uygulamanız gerekiyor. Bunun için aşağıdaki komutu kullanacağız;
git cherry-pick <commit-hash>
<commit-hash> kısmına taşımak istediğimiz commit’in hash’ini girmemiz gerekecek. Hash dediğimiz şey aslında commit’lerimizin kimliği gibi düşünebiliriz. Bizim taşımak istediğimiz commit master branch’inde. Bu yüzden master branch’ine gidip. Aşağıdaki komutu çalıştırın;
git log
Yukarıdaki komut bulunduğunuz branch’e (bizim durumumuz için master branch’ine) atılan tüm commit’leri gösterecektir. Bunun örnek bir çıktısı aşağıdaki gibidir;
commit 25ab34a89dabc46b7796e5d9d132cca73df326cc (HEAD -> master)
Author: Ertan Özdemir
Date: Thu Jul 28 21:33:52 2022 +0300
First commit
Bir commit’in hash’i, ilk satırda yer alan şu ifadedir;
25ab34a89dabc46b7796e5d9d132cca73df326cc
Bunu kopyalayalım ve aktarmak istediğimiz branch’e geçiş yapalım;
git checkout develop
Daha sonra ise cherry-pick komutunu yazıp kopyaladığımız hash’i bunun sonuna ekleyelim;
git cherry-pick 25ab34a89dabc46b7796e5d9d132cca73df326cc
Tebrikler! master branch’indeki commit’inizi develop branch’ine de uygulamış oldunuz.
Eğer aşağıdaki kodu çalıştırırsanız, master branch’i üzerindeki son commit’i develop branch’ine uygulamış olursunuz;
git cherry-pick master
Önemli bir not: Cherry-pick ile taşıdığınız commit, develop’a aktarılır fakat master’dan silinmez. Eğer master’dan bu commit’i kaldırmak istiyorsanız o halde aşağıdaki komutu çalışıtrıp son commit’inizi kaldırabilirsiniz.
git checkout master
git reset HEAD~ --hard
Commit’leriniz az sayıda ise bunları başka branch’lere uygulamak, cherry-pick ile oldukça etkili ve güzel bir yöntemdir.
Resource https://ohshitgit.com/tr