2015-07-28 19 views
13

git stash list'u kullanmak, kimlikleri olan stashe'lerin listesini gösterir. git stash list --date=local veya git stash list --date=relative kullanarak bana zamanlarını verir, ancak karşılık gelen kimlikleri hakkında hiçbir fikrim yok.Stash date/timestamp nasıl görüntülenir?

Belirli bir zamanda bir saklamak istiyorum.

+0

https://stackoverflow.com/questions/23263781/git-stashed-date ile aynı –

cevap

11

git stash list basitçe seçenekler belirli bir dizi ile git log çalıştırır:

list_stash() { 
     have_stash || return 0 
     git log --format="%gd: %gs" -g --first-parent -m "[email protected]" $ref_stash -- 
} 

[email protected] bölümü belirttiğiniz her türlü ek seçenekler ekler (varsayılan olarak hiçbiri, ancak bu durumda --date=relative). Eğer --date=relative kullandığınızda

bu %gd çıktı değiştirir:

$ git stash list 
[email protected]{0}: ... 
$ git stash list --date=relative 
[email protected]{4 minutes ago}: ... 

The: yerine indeksi ile kısa reflog, sen bir göreli zaman damgasıyla ile kısa reflog olsun Bu durumda çözüm, sadece --date=relative'un %gd'un nasıl görüntüleneceğini değiştirmekten ziyade kendi açık biçiminizi kullanmaktır. Örneğin:

$ git stash list --format='%gd (%cr): %gs' 
[email protected]{0} (4 minutes ago): ... 

(%cr uçlar tüm git stash da biliyor kez biçim-Bu mantıklı göreli içinde, en committer zaman damgası işlemek kaydedilmesini özel üzerine kaydederek sizin için kaydedilmesini bir çiftsiniz olduğunu Bir şube yerine stash ref. Bu yanıtı incelediğimizde


, ben --first-parent ve -m argümanlar ( git stash kodunda anlamıyla mevcut) nedeniyle -g Tartışmanın ilk başta gereksiz gibi unutmayın. için -g argümanı, yalnızca taahhüt tarihçesinden ziyade yalnızca reflogda görünmesini söyler, bu durumda --first-parent hiçbir şey ifade etmez. Bu arada, -m, bir birleştirme işlemini bölmek için git diff'a bildirir, ancak taahhüt kütüklerine bakıyoruz, fark değil, yani burada ne yapıyor?

cevap bir argüman olarak -p verirsen bu yüzden, git diff çalıştığı için bir yama gösterebilir git log, --first-parent -m hangi taahhüt karşılaştırarak bu diff sınırlar olmasıdır ilk ebeveyn karşı zula reflog noktaları . stash bag, reflog giriş noktalarının, ilk üst öğesinin, stash-bag'ın askıda kaldığı asıl işlem olduğu çalışma ağacı taahhüdüdür. (İkinci üst öğesi, indeks işlemi ve eğer varsa, tümünün veya tamamlanmamış dosyaların işlenmesi için üçüncü veli.) Bu nedenle bu seçenekler, stash'ın iş ağacının işleyişini kendisinin saklı olduğu zamanki işleyişine karşı git stash list -p farkını yapmak için var. yapıldığı.

Bu zeki, ancak oldukça belirsiz!Bir stash bahsederken :-)

9

Aslında doğrudan [email protected]<date> sözdizimi kullanabilirsiniz:

$ git stash list --date=local 
[email protected]{Sun Dec 21 22:32:14 2014}: WIP on develop: 7142a6e Update data files 
[email protected]{Fri Dec 12 10:02:20 2014}: WIP on develop: c72abda Add initial calibration data 
[email protected]{Wed Dec 10 10:02:05 2014}: WIP on master: 1d27422 Bug fix for gadgeteer 
$ git show '[email protected]{Fri Dec 12 10:02:20 2014}' 
commit a096484501caf14942f01a6500a5d0c3476d3145 
Merge: c72abda 861fff6 
Author: Robert Xiao <[email protected]> 
Date: Fri Dec 12 13:02:20 2014 -0500 

    WIP on develop: c72abda Add initial calibration data 
... 
$ git stash pop '[email protected]{Fri Dec 12 10:02:20 2014}' 

gerek yok hiç saklamak kimliğini almak için! Bu, göreli tarihler benzersiz olduğu sürece date=relative ile çalışır.