ROYTO
Published in

ROYTO

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

--

--

Resmî Olmayan Yazılım Topluluğu, üniversite öğrencileri tarafından kurulmuş bir yazılım oluşumudur. Herkesin algoritmalar, yazılım dilleri ve benzeri konularda katkı sağlayabileceği ve kendine yeni vizyon katabileceği bir ortam oluşturmak temel odağımızdır.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store