Git dalının ne zaman oluşturulduğunu belirlemenin bir yolu var mı ? Repomda bir şubem var ve onu yarattığımı hatırlamıyorum ve belki de yaratma zaman damgasını görmenin hafızamda koşacağını düşündüm.
Git dalının ne zaman oluşturulduğunu belirlemenin bir yolu var mı ? Repomda bir şubem var ve onu yarattığımı hatırlamıyorum ve belki de yaratma zaman damgasını görmenin hafızamda koşacağını düşündüm.
Yanıtlar:
kullanım
git show - özet "git merge-base foo master"
Gitk kullanarak bağlamda görmeyi tercih ediyorsanız,
gitk --all --select-commit = `git birleştirme tabanı foo yöneticisi`
(burada foo, aradığınız şubenin adıdır.)
Gibi Açıklamalarda belirttiği ve Jackub cevabı sürece şube yapılandırma ayarında belirlediğiniz gün sayısından daha genç olduğu için,gc.reflogexpire
bir şube referans iken (varsayılan 90 gündür), o zaman öğrenmek için reflog yararlanabilirler ilk oluşturuldu.
git reflog
Çoğu git log
bayrağı alabileceğinizi unutmayın . Ayrıca,HEAD@{0}
stil seçicilerin etkili bir şekilde zaman kavramları olduğunu ve aslında (saldırıya uğramış bir şekilde) tarih dizeleri olarak ele alındığını unutmayın. Bu, bayrağı kullanabileceğiniz anlamına gelir.--date=local
ve şu şekilde çıktı :
$ git reflog --date = yerel 763008c KAFA @ {Cum 20 Ağu 10:09:18 2010}: çekme: Hızlı ileri sarma f6cec0a HEAD @ {Sal 10 Ağu 09:37:55 2010}: çekme: İleri sar e9e70bc HEAD @ {Per 4 Şub 02:51:10 2010}: çekme: Hızlı ileri sar 836f48c KAFA @ {Per 21 Oca 14:08:14 2010}: ödeme: master'dan master'a geçiş 836f48c KAFA @ {Per 21 Oca 14:08:10 2010}: çekme: Hızlı ileri sarma 24bc734 KAFA @ {Çar 20 Oca 12:05:45 2010}: ödeme: 74fca6a42863ffacaf7ba6f1936a9f228950f657 74fca6a KAFA @ {Çar 20 Oca 11:55:43 2010}: ödeme: master'dan v2.6.31'e geçiş 24bc734 KAFA @ {Çar 20 Oca 11:44:42 2010}: çekme: Hızlı ileri sarma 964fe08 KAFA @ {Pzt 26 Ekim 15:29:29 2009}: ödeme: 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 adresinden hareket ediyor 4a6908a KAFA @ {Pzt 26 Ekim 14:52:12 2009}: ödeme: master'dan v2.6.28'e geçiş
Ayrıca, kullanımı bazen yararlı olabilir --date=relative
:
$ git reflog --date = göreli 763008c HEAD @ {4 hafta önce}: çekme: Hızlı ileri sarma f6cec0a HEAD @ {6 hafta önce}: çekme: Hızlı ileri sarma e9e70bc HEAD @ {8 ay önce}: çekme: Hızlı ileri alma 836f48c HEAD @ {8 ay önce}: ödeme: master'dan master'a geçiş 836f48c HEAD @ {8 ay önce}: çekme: Hızlı ileri sar 24bc734 HEAD @ {8 ay önce}: ödeme: 74fca6a42863ffacaf7ba6f1936a9f228950f657'den ustalığa geçiş 74fca6a HEAD @ {8 ay önce}: ödeme: master'dan v2.6.31'e geçiş 24bc734 KAFA @ {8 ay önce}: çekme: Hızlı ileri sar 964fe08 HEAD @ {11 ay önce}: ödeme: 4a6908a3a050aacc9c3a2f36b276b46c0629ad91'den ustalığa geçiş 4a6908a HEAD @ {11 ay önce}: ödeme: master'dan v2.6.28'e geçiş
Son bir not: --all
bayrak (gerçekten git-reflog tarafından anlaşılan bir git-log bayrağıdır), şube etkinliklerini açıkça gösterecek olan refs/
(sadece yerine) bilinen tüm başvuruların refloglarını HEAD
gösterecektir:
git reflog --date = local --all 860e4e4 refs / heads / master @ {Paz 19 Eyl 23:00:30 2010}: taahhüt: İkinci. 17695bc refs / heads / example_branch @ {Pzt 20 Eylül 00:31:06 2010}: şube: HEAD tarafından oluşturuldu
gc.reflogexpire
gün içinde gerçekleşir .
Pro Git § 3.1 Git Dallanma - Bir Dalın Nedir , bir git dalının gerçekte ne olduğuna dair iyi bir açıklaması vardır
Git'teki bir dal, [a] taahhüdüne basitçe hafifçe taşınabilir bir göstericidir.
Bir dal sadece hafif bir işaretçi olduğundan git'in geçmişi veya oluşturma tarihi hakkında açık bir fikri yoktur. "Ama bekle," dediğini duyuyorum, "elbette git benim şube tarihimi biliyor!" İyi sıralama.
Aşağıdakilerden birini çalıştırırsanız:
git log <branch> --not master
gitk <branch> --not master
"şubenizin tarihi" ne benzediğini göreceksiniz, ancak gerçekten "branştan" erişilebilen taahhütlerin bir listesi. Bu size istediğiniz bilgiyi verir, ancak ve ancak 'dal' ı hiç master ile birleştirmediyseniz ve master'ı asla oluşturduğunuzdan beri 'dal' ile birleştirmediyseniz. Eğer varsa var birleşti, o zaman farklılıkların bu tarih çökecek.
Neyse ki, burada diğer çeşitli cevaplarda açıklandığı gibi, reflog genellikle istediğiniz bilgileri içerir. Bunu kullan:
git reflog --date=local <branch>
Şube tarihini göstermek. Bu listedeki son giriş (büyük olasılıkla) dalı oluşturduğunuz noktadır.
Şube silinmişse, 'şube' artık geçerli bir git tanımlayıcısı değildir, ancak bunun yerine istediğinizi bulabilir:
git reflog --date=local | grep <branch>
Veya bir Windows cmd kabuğunda:
git reflog --date=local | find "<branch>"
Reflog'un uzak dallarda etkili olmayacağını, yalnızca yerel olarak çalıştığınızı unutmayın.
gc.reflogexpire
işaret edildiği gibi, dalınız günlerden daha eski olmadığı sürece bu bloğu yalnızca bunun için kullanabileceğinizi not etmek önemlidir .
git reflog --date=local <branch>
Öncelikle, şube içinde oluşturulmuşsa, gc.reflogexpire
gün (varsayılan 90 gün, yani yaklaşık 3 ay), kullanabilirsiniz git log -g <branch>
veya git reflog show <branch>
aşağıda gibi yaratma olay olacağını reflog ilk girdiyi bulmak ve görünüm (için bir şey git log -g
):
Reflog: <branch>@{<nn>} (C R Eator <creator@example.com>)
Reflog message: branch: Created from <some other branch>
Kimin bir şube oluşturduğunu, kaç operasyondan önce ve hangi branştan (yani, sadece "HEAD'den yaratılmış olabilir, ki bu çok yardımcı olmaz) elde edersiniz.
Yani ne MikeSep onun cevabını söyledi .
İkinci olarak, daha uzun süre şubeniz varsa gc.reflogexpire
ve koştuysanız git gc
(veya otomatik olarak çalıştırıldıysa), oluşturulduğu dalla ortak bir ata bulmanız gerekir. Yapılandırma dosyasına bir göz atın, belki de bunun branch.<branchname>.merge
hangi şubeye dayandığını söyleyen bir giriş var .
Söz konusu dalın ana daldan oluşturulduğunu biliyorsanız (ana daldan çatallama), ortak atayı görmek için aşağıdaki komutu kullanabilirsiniz:
git show $(git merge-base <branch> master)
git show-branch <branch> master
Alternatif olarak da deneyebilirsiniz .
Bu nedir gbacon onun cevaben söyledi .
Bunun için git komutundan henüz emin değilim, ama onları refloglarda bulabileceğinizi düşünüyorum.
.git/logs/refs/heads/<yourbranch>
Dosyalarımın içinde unix zaman damgası var gibi görünüyor.
Güncelleme: Günlükleri yazdırırken yürütme geçmişi yerine reflog geçmişini kullanma seçeneği var gibi görünüyor:
git log -g
Şube oluşturduğunuz zamana kadar bu günlüğü de takip edebilirsiniz. git log
Ancak, taahhütte bulunma tarihini gösterir, ancak yeniden blog'a giriş yapan işlemi yaptığınız tarihi göstermez. Ben yukarıdaki yoldaki gerçek reflog bakarak dışında henüz bulamadım.
Bunu dene
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)'
%
önce ihtiyacınız olabilir(refname)
| cut -c 5- | sort -r |
ve sonra ay için grep ile pipetledim, bana aşağı yukarı kronolojik bir liste listesi verdi.
--sort='-committerdate'
(ters kronolojik sipariş için başlama tarihinden önce '-' not edin).
kullanın:
git reflog
deponuzun tüm yaşam döngüsünü geçerli klasörde göstermek için. İlk görünen şube adı (aşağıdan yukarıya) oluşturulan kaynaktır.
855a3ce HEAD@{0}: checkout: moving from development to feature-sut-46
855a3ce HEAD@{1}: checkout: moving from feature-sut-46 to development
855a3ce HEAD@{2}: checkout: moving from feature-jira35 to feature-sut-46
535dd9d HEAD@{3}: checkout: moving from feature-sut-46 to feature-jira35
855a3ce HEAD@{4}: checkout: moving from development to feature-sut-46
855a3ce HEAD@{5}: checkout: moving from feature-jira35 to development
535dd9d HEAD@{6}: commit: insert the format for vendor specific brower - screen.css
855a3ce HEAD@{7}: checkout: moving from development to feature-jira35
855a3ce HEAD@{8}: checkout: moving from master to development
Bu şu anlama gelir:
Masterdan şube geliştirme (checkout -b)
Şube özelliği-jira35 geliştirmeden yaratılır (kasa -b)
Şube özelliği-jira-sut-46 geliştirmeden oluşturulur (kasa -b)
Bu konuyu bulamadan önce geldiğim bir şey.
git reflog show --date=local --all | sed 's!^.*refs/!refs/!' | grep '/master' | tail -1
git reflog show --date=local --all | sed 's!^.*refs/!refs/!' | grep 'branch:'
Bu yakalanan görünen şube oluşturulma tarihi komutları dev
danmain
$git reflog show --date=iso dev
$7a2b33d dev@{2012-11-23 13:20:28 -2100}: branch: Created from main
Tüm şubelerin detaylarını almak istiyorsanız
for i in `git branch -r | tail -n +2 `;do git log --reverse $i|grep -A 2 -B 2 `echo $i | awk -F'origin/' '{print $2}'` |head -n 4; done
En iyi yolu buldum: Her zaman bu şekilde oluşturulan en son şubeyi kontrol ederim
git for-each-ref --sort=-committerdate refs/heads/
Andrew Sohn'un cevabı ile birlikte ( https://stackoverflow.com/a/14265207/1929406 )
branchcreated=$(git reflog show --date=format:'%Y-%m-%d %H:%M:%S' --all | sed 's!^.*refs/!refs/!' | grep '/master' | tail -1| cut -d'{' -f 2| cut -d'}' -f 1 | xargs)
echo $branchcreated
Bu benim için yaptı: (10 yıl sonra)
git log [--remotes] --no-walk --decorate
Şube oluşturma süreleri hakkında depolanmış bilgi olmadığından bunun yaptığı her bir şubenin ( --no-walk
) taahhüt tarihini içeren ilk taahhüdünü göstermektir. kullanım--remotes
Uzak dallar için veya yerel dallar için atlayın.
Başka bir tane oluşturmadan önce bir dalda en az bir taahhütte bulunduğumdan, bu, dokümantasyon amacıyla birkaç aylık dal oluşturma (ve dev-start özelliği) izlememe izin verdi.
kaynağı: stackexchange üzerinde AnoE