2012-09-07 6 views
5

Şöyle bir git takma var. Ancak, bu takma bir daldayken gerçekten doğru çalışmıyor.Dağıtılmamış işler için takma ad, hangi dalda olursa olsun? Usta olduğum zaman "unpushed" değişiklikleri gösteren büyük inşaat için</p> <pre><code>[alias] unpushed = log origin..HEAD --pretty=format:'%h %an %s' </code></pre> <p>:

Dalda bulunup bulunmadığımı, düzeltilmemiş değişiklikler gösterecek doğru komut ne olurdu?

+0

Bir dalda benim için işe yarıyor gibi görünüyor ... sizin için ne çalışmıyor? –

+0

Çalışıyor, ancak şubenin nasıl bir master'dan ayrıldığını gösteriyor, yerel kopyasımın akış yukarı yönde nasıl ayrıldığını değil, istediğim şey bu. – slacy

cevap

5

, aşağıdaki kullanabilirsiniz:

git config alias.unpushed "log @{u}.. --pretty=format:'%h %an %s'" 

Bu memba daldan ulaşılabilir olanlar hariç HEAD tüm ulaşılabilir taahhüt göstermek için git log neden olur. @{u}.. bağımsız değişkeni @{u}..HEAD ile eşdeğerdir ve @{u}, geçerli dalın yukarı akış işlemi için kısa yoldur (örneğin, çıkış noktası foo ise origin/foo). Tüm referansları yürümeye

git config alias.unpushed "log --all --not --remotes --tags --pretty=format:'%h %an %s'" 

yukarıdaki nedenler git log ancak (dışlamak) uzak referanslar (örn origin/master) ve etiketleri durdurmak: Eğer tüm branşlarda tüm unpushed kaydedilmesini görmek istiyorsanız

Bunu yapmak . Git, yerel ve uzak etiketler arasında ayrım yapmaz, bu nedenle yukarıdakiler tüm etiketlerin uzak olduğunu varsayar (bu her zaman doğru değildir, bu nedenle bazen --tags argümanını dışarıda bırakmak isteyebilirsiniz).

Ben şahsen unpushed kaydedilmesini göstermek için aşağıdaki adlar kullanın: Basit depoları için

# unpushed: graph of everything excluding pushed/tag commits 
# with boundary commits (see below for 'git g' alias) 
git config alias.unpushed '!git g --not --remotes --tags' 

# go: _G_raph of _O_utgoing commits with boundary commits 
# (see below for 'git gb' alias) 
git config alias.go '!git gb @{u}..' 

# g: _G_raph of everything with boundary commits 
git config alias.g '!git gb --all' 

# gb: _G_raph of current _B_ranch (or arguments) with boundary commits 
git config alias.gb '!git gbnb --boundary' 

# gbnb: _G_raph of current _B_ranch (or arguments) with _N_o _B_oundary commits 
git config alias.gbnb 'log --graph --date-order --pretty=tformat:"%C(yellow)%h%Creset %C(magenta)%aE %ai%Creset %C(green bold)%d%Creset%n  %s"' 

Ben kaydedilmesini keşfetmek benim birincil yöntem olarak git g takma ad kullanmak. Karmaşık depolar (düzinelerce dallar) için, genellikle belirli şubeleri veya işlem aralıklarını göstermek için git gb kullanın. git push'un uzaktan başvuruyu nasıl değiştireceğini görmek istediğimde (push.defaultupstream olarak ayarlanmış), git go kullanıyorum. Yerel veri havuzumda herhangi bir şey olup olmadığını görmek istediğimde, itiraf etmedim (örneğin, klonu silersem çalışmamı kaybedersem), git unpushed'u kullanırım.

1

Bu ve diğer sorularınız için git-wtf kullanıyorum.

1

Bu yapacak:

git config alias.unpushed "log $(git rev-parse --symbolic-full-name @{u})..HEAD --pretty=format:'%h %an %s'" 

Bu kafa ile üst baş izleme dal (örneğin, refs/remotes/origin/master) tam adı karşılaştırır. Tam ad, ortalama git işleminiz için geçerli bir refspektir.

yerine pull ait fetch kullanın ve isterseniz ya branşında taahhüt ancak ikisini, ... sözdizimi yerine komuta .. sözdizimini kullanın. Sadece şimdiki şube için giden kaydedilmesini görmek istiyorsanız

+0

İşler gerçekten işe yaramıyor - bu, çıkış yapılan ağacın takma adlarını gösteriyor.gitconfig, ancak dalları "git checkout" ile değiştirirseniz, diğer ad eski şubeye başvurmaya devam eder. "$ (Git ...)" stil kabuk genişletmelerini ~/.gitconfig içine koyabilirim. – slacy

+0

@slacy Ah evet Şimdi hatayı görüyorum. Cevaplanan Richard'ın cevabı. – Christopher

İlgili konular