git etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
git etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Git'in Tüm Logları Birden Yazdırması Sorununun Çözümü

Git ile çalışırken, özellikle yüzlerce commit'iniz olduğunda, git log komutunun çıktısı bazen terminal ekranınızı hızla doldurur ve geçmişi incelemeyi zorlaştırır. Normalde, git log çıktıyı sayfa sayfa göstermeli, size "Devam etmek için bir tuşa bas, çıkmak için q'ya bas" gibi olması gerekirken tüm loglar bir anda ekrana yığılır.

Git normalde uzun çıktıları yönetmek için bir "pager" (sayfalayıcı) kullanır. Eğer tüm komutlar birden gösteriliyorsa bu genellikle pager'ın devre dışı bırakıldığı veya yanlış yapılandırıldığı anlamına gelir.


1. Ortam Değişkenlerini Kontrol Edin

Bazen GIT_PAGER veya genel PAGER ortam değişkenleri Git'in kendi ayarlarını geçersiz kılabilir. Bu değişkenlerin cat gibi bir programa ayarlı olması veya boş olması pager'ı devre dışı bırakır.

Terminalinizde bu değişkenlerin değerlerini kontrol edin:

echo $GIT_PAGER
echo $PAGER

Eğer bu komutlar cat veya boş bir satır döndürüyorsa, geçici olarak onları kaldırabilirsiniz:

unset GIT_PAGER
unset PAGER

Bunu yaptıktan sonra git'in global config ayarlaından pager'ı tekrardan less olarak ayarlayabilirsiniz.

git config --global core.pager "less -F"


Bonus: Eğer loglarınızı her bir commit tek satır olacak şekilde görmek isterseniz "git l" comutunu şu config'i ayarlayarak kullanabilirsiniz:
git config --global alias.l "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --all"

Paylaş:

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