git'te şube topolojisini görselleştirme

Kendi makinemde git ile tek başıma oynuyorum ve tüm dallarımın ve taahhütlerimin zihinsel bir modelini sürdürmekte zorlanıyorum. Bulunduğum yerden commit geçmişini görmek için bir git log yapabileceğimi biliyorum, ancak tüm şube topografyasını görmenin bir yolu var mı, dalları açıklamak için her yerde kullanılıyor gibi görünen bu ascii haritaları gibi bir şey?

      .-A---M---N---O---P
     /     /   /   /   /
    I     B   C   D   E
     \   /   /   /   /
      `-------------'

Sanki biri gelip benim depomu almaya kalksa tam olarak ne olup bittiğini anlamakta zorluk çekecekmiş gibi geliyor.

Sanırım AccuRev'in akış tarayıcısından etkilendim...

Çözüm

git log --graphveyagitk. (Her ikisi de sadece mevcut dal yerine tüm dalları gösterecek olan--all` seçeneğini de kabul eder).

Düzenle: Şube adları ve kompakt bir görünüm için deneyin: git log --graph --decorate --oneline

Yorumlar (7)

Ben genellikle

git log --graph --full-history --all --pretty=format:"%h%x09%d%x20%s"

Renklerle (eğer kabuğunuz Bash ise):

git log --graph --full-history --all --color \
        --pretty=format:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s"

Bu, metin tabanlı gösterimi aşağıdaki gibi yazdıracaktır:

* 040cc7c       (HEAD, master) Mannual is NOT built by default
* a29ceb7       Removed offensive binary file that was compiled on my machine and was hence incompatible with other machines.
| * 901c7dd     (cvc3) cvc3 now configured before building
| * d9e8b5e     More sane Yices SMT solver caller
| | * 5b98a10   (nullvars) All uninitialized variables get zero inits
| |/
| * 1cad874     CFLAGS for cvc3 to work succesfully
| *   1579581   Merge branch 'llvm-inv' into cvc3
| |\
| | * a9a246b   nostaticalias option
| | * 73b91cc   Comment about aliases.
| | * 001b20a   Prints number of iteration and node.
| |/
|/|
| * 39d2638     Included header files to cvc3 sources
| * 266023b     Added cvc3 to blast infrastructure.
| * ac9eb10     Initial sources of cvc3-1.5
|/
* d642f88       Option -aliasstat, by default stats are suppressed

(Sadece git log --format=oneline kullanabilirsiniz, ancak bu işlem mesajlarını sayılara bağlayacaktır, bu da IMHO'da daha az güzel görünecektir).

Bu komutun kısayolunu oluşturmak için ~/.gitconfig dosyanızı düzenlemek isteyebilirsiniz:

[alias]
  gr = log --graph --full-history --all --color --pretty=tformat:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s%x20%x1b[33m(%an)%x1b[0m"

Ancak, Sodel the Vociferous'un yorumlarda belirttiği gibi, bu kadar uzun biçimlendirme komutunu ezberlemek zordur. Genellikle, ~/.gitconfig dosyasına koyabileceğiniz için sorun olmaz. Ancak, bazen yapılandırma dosyasını değiştiremeyeceğiniz uzak bir makinede oturum açmanız gerekiyorsa, daha basit ama yazması daha hızlı bir sürüm kullanabilirsiniz:

git log --graph --oneline
Yorumlar (5)

Ben git log ile yapmayı seviyorum:

 git log --graph --oneline --branches

(ayrıca --all ile, uzak şubeleri de görüntülemek için)

Son Git sürümleriyle çalışır: tanıtıldı 1.6.3'ten beri (Per, 7 Mayıs 2009)

  • "--pretty=" komut ailesinin log seçeneği artık "--format=" olarak yazılabilir.
    Ayrıca, --format=%formatstring, --pretty=tformat:%formatstring ifadesinin kısaltmasıdır.
  • "--oneline" "--pretty=oneline --abbrev-commit" ile eşanlamlıdır.
PS D:\git\tests\finalRepo> git log --graph --oneline --branches --all
* 4919b68 a second bug10 fix
* 3469e13 a first bug10 fix
* dbcc7aa a first legacy evolution
| * 55aac85 another main evol
| | * 47e6ee1 a second bug10 fix
| | * 8183707 a first bug10 fix
| |/
| * e727105 a second evol for 2.0
| * 473d44e a main evol
|/
* b68c1f5 first evol, for making 1.0

Ayrıca günlük görüntüleme süresini de sınırlayabilirsiniz (taahhüt sayısı):

PS D:\git\tests\finalRepo> git log --graph --oneline --branches --all -5
* 4919b68 a second bug10 fix
* 3469e13 a first bug10 fix
* dbcc7aa a first legacy evolution
| * 55aac85 another main evol
| | * 47e6ee1 a second bug10 fix

(yalnızca son 5 işlemi göster)


Seçilen mevcut çözümle ilgili hoşuma gitmeyen şey şu:

 git log --graph

Çok fazla bilgi gösteriyordu (sadece hızlı bir özete bakmak istediğimde):

PS D:\git\tests\finalRepo> git log --graph
* commit 4919b681db93df82ead7ba6190eca6a49a9d82e7
| Author: VonC 
| Date:   Sat Nov 14 13:42:20 2009 +0100
|
|     a second bug10 fix
|
* commit 3469e13f8d0fadeac5fcb6f388aca69497fd08a9
| Author: VonC 
| Date:   Sat Nov 14 13:41:50 2009 +0100
|
|     a first bug10 fix
|

gitk` harikadır, ancak beni kabuk oturumunu başka bir pencere için terk etmeye zorlar, oysa son n taahhütü hızlı bir şekilde görüntülemek genellikle yeterlidir.

Yorumlar (2)