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ş:

Ubuntu Dosya/Klasörü Kısayol Yapıştırma (Symlink Oluşturma)

 Windows'ta bildiğiniz gibi bir dosyayı başka bir yere kısayol olarak yapıştırabiliyorsunuz. Ubuntu'da da Symlink (Sembolik link) adı altında bu özellik mevcut. Fakat problem şu ki, internette bu konu hakkında yazılanların çoğu bunu terminal açıp, hem kopyalamak hem de yapıştırmak istediğimiz yerin dosya dizinlerini kopyalayıp ln komutu ile kullanmayı içeriyor ve bu çoğu kişiye karışık gelebilir.

Oysa ki çözümü basit. 

Gnome dosya yöneticisini (Nautilus) açıp, sağ üstteki 3 çizgiden Preferences(Seçenekler)'e tıklayın.

Çıkan menüden 

Create Link (Bağlantı oluştur) seçeneğini aktif hale getirin. Bu hiçbir terminal komutuna gerek kalmadan yeterli olacaktır.

Paylaş:

Dual Boot Ubuntu'da Windows Dosyası Değiştirme İzni

 Ubuntu ve Windows'u bir arada kullanınca yaşanan sorunlardan biri de bazen karşılaştığımız dosya izin sorunu. Ubuntu üzerinden SSD diskimizdeki dosyalar için bazen read-only izni, bazen de read-write izni oluyor.



Normalde 

chmod go+rwx /klasor/yolu # Grup ve diğer
chmod a+rwx /klasor/yolu  # A(all) = kullanıcı + grup + diğer
komutları ile izinleri yazma izni verecek biçimde değiştirebilirken, Windows dosyalarımızda bu yöntem her zaman işe yaramıyor. 


Bunun nedeni de Windows'un, sonrasında daha hızlı açılmak için uyguladığı hibernate (kış uykusu / uykuda hazırda bekletme) modu. 

Windows'u kapattığınızda aslında fast-boot özelliği devrede olduğu için tam olarak kapanmıyor, bazı özellikler hibernate modda bekletiliyor. 
Ubuntu'da, ortak diskle ilgili çalışma yapacağınız zaman yapmanız gereken şey bilgisayarı kapatırken Shift tuşuna basılı durumda iken Bilgisayarı Kapat'a basmak. Böylece Windows tam olarak kapanacak ve Ubuntu'da diske erişiminiz tam olacak.

Paylaş:

Ara