Commit Geçmişini Koruyarak 2 Git Repo'sunu Birleştirmek

 Merhaba,

 Yazıda size Ubuntu terminal veya git bash kullanarak farklı git repolarını tek bir repoda birleştirmeyi göstereceğim. Bunun sonucunda commit geçmişi korunacak.

Öncelikle, eğer ana dizinde Git repository'si oluşturmamışsanız, yeni bir klasörde git init ile oluşturun. Henüz hiçbir commit olmadığı için master branch'i oluşturulmamış olacak. Master branchine ihtiyacımız var bu yüzden eğer commit'iniz yoksa, readme dosyası yaratan aşağıdaki örnek komutu kullanabilirsiniz.


touch README.md && git add . && git commit -am "Adding readme file"

İlk commit edildi.

Varsayalım ki git repolarınız "final" ve "midterm". Ve git init/git clone.. ile oluşturduğunuz yeni repo ise "CSE-344" klasörü.
Ana repoyu yani CSE-344 klasörünü açın.



git remote add <repo_alias> <link>

Yukarıdaki komutla repoları remote olarak ekleyin. Burada repo_alias reponuz için verdiğiniz ismi, link ise repoya olan relative path'i (göreceli yolu) gösteriyor. 
Sonrasında "git remote -v" ile eklenen repoları listeyebilirsiniz.


"git fetch repo_alias_adı" ile remote'daki repo kodlarının kopyasını local e oluştururun. 


"git branch -a" ile remote'taki branchleri görebiliyoruz.


Şu an amaç bu repolar için localde branch oluşturmak. (Alttaki kısımlar her bir alt repo için uygulanacak.)

Aşağıdaki komutla alt repo için branch oluşturun. Alt repo branch adı oluşturduğunuz yeni repo branch adları oluyor. 

git branch yeniRepoİçinBranchAdı eskiRepodakiBranchAdı


Sonrasında o branch'e geçiş yapın. Branchte repo için klasör adı koyup tüm repoyu oraya taşıyın ve commit edin.

git checkout altRepoİçinBranchAdi
mkdir altRepoİçinKlasörAdı/ 
git ls-tree -z --name-only HEAD | xargs -0 -I {} git mv {} altRepoİçinKlasörAdı/
git commit -m "Commit mesajı"



Sonrasında checkout ile master branche geçiş yapıp merge ile birleştirin. Merge ederken sizden merge mesajı yazmanız istenirse Ctrl X ile çıkın. 

git checkout master && git merge --allow-unrelated-histories branchAdı



Bu işlemleri tüm alt repolar için yapın. 


İşlemler sonucunda "git log" komutu ile repo commitlerinin korunduğunu görebilirsiniz.


Paylaş:

Ara