Kimin şube oluşturduğunu öğrenmek istiyorum.
Ben bunu ile tür mümkün:
git branch -a | xargs -L 1 bash -c 'echo "$1 `git log --pretty=format:"%H %an" $1^..$1`"' _
Ancak bu, dalı oluşturan kişiyi değil, her şube için son geçişi döndürür.
Kimin şube oluşturduğunu öğrenmek istiyorum.
Ben bunu ile tür mümkün:
git branch -a | xargs -L 1 bash -c 'echo "$1 `git log --pretty=format:"%H %an" $1^..$1`"' _
Ancak bu, dalı oluşturan kişiyi değil, her şube için son geçişi döndürür.
Yanıtlar:
Bir dal, kesin bir göstergeden başka bir şey değildir. Bu nedenle, "beni kim yarattı" gibi meta verileri izlemez. Kendin için gör. Deponuzda deneyin cat .git/refs/heads/<branch>
.
Yazılı, eğer gerçekten bu bilgiyi deponuzda izlemek istiyorsanız, şube açıklamalarına göz atın . En azından yerel olarak dallara rastgele meta veriler eklemenize izin verir.
Ayrıca DarVar'ın aşağıdaki cevabı bu bilgiye ulaşmanın çok akıllıca bir yoludur.
Yazara göre uzak Git dallarını yazar tarihine göre sırala
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' --sort=committerdate
git for-each-ref --format='%(committerdate)%09%(authorname)%09%(refname)' | sort -k5n -k2M -k3n -k4n | grep remotes | awk -F "\t" '{ printf "%-32s %-27s %s\n", $1, $2, $3 }'
( stackoverflow.com/a/3631819
--sort
Bayrağı kullanarak önceki yanıtları değiştirdim ve bazı renk / biçimlendirme ekledim:
git for-each-ref --format='%(color:cyan)%(authordate:format:%m/%d/%Y %I:%M %p) %(align:25,left)%(color:yellow)%(authorname)%(end) %(color:reset)%(refname:strip=3)' --sort=authordate refs/remotes
git for-each-ref --format='%(authorname) %09 -%(refname)' | sort
DarVar'ın cevabına ekleme :
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n | awk '{print $7 $8}'
Not: AWK'yı yazarı ve uzak dalı güzel yazdırmak için kullandık.
Yerel deponuzda kimin şube oluşturduğunu öğrenebilirsiniz .
git reflog --format=full
Örnek çıktı:
commit e1dd940
Reflog: HEAD@{0} (a <a@none>)
Reflog message: checkout: moving from master to b2
Author: b <b.none>
Commit: b <b.none>
(...)
Ancak bu muhtemelen yerel deponuzda yalnızca siz şubeler oluşturduğunuz için işe yaramaz.
Bilgiler ./.git/logs/refs/heads/ şubesinde saklanır . Örnek içerik:
0000000000000000000000000000000000000000 e1dd9409c4ba60c28ad9e7e8a4b4c5ed783ba69b a <a@none> 1438788420 +0200 branch: Created from HEAD
Bu örnekteki son işlem "b" kullanıcısından, "b2" dalı ise "a" kullanıcısı tarafından oluşturulmuştur. Kullanıcı adınızı değiştirirseniz git reflog'un bilgileri günlükten aldığını ve yerel kullanıcıyı kullanmadığını doğrulayabilirsiniz.
Bu yerel günlük bilgilerini merkezi bir havuza iletme olasılığı hakkında bir fikrim yok.
varsayarsak:
master
master
henüz birleştirilmedi git log --format="%ae %an" master..<HERE_COMES_THE_BRANCH_NAME> | tail -1
Bunun tamamen sorunun kapsamı olmadığını biliyorum, ancak yalnızca belirli bir yazar tarafından yapılan taahhütleri filtreleme ihtiyacı bulursanız, her zaman grep'e yönelebilirsiniz :)
# lists all commits in chronological order that
# belong to the github account with
# username `MY_GITHUB_USERNAME` (obviously you
# would want to replace that with your github username,
# or the username you are trying to filter by)
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -committerdate | grep 'MY_GITHUB_USERNAME'
mutlu kodlama! :)
DESC arayanlar için ... bu işe yarıyor gibi görünüyor --sort=-
biçimlendirme için ty, bunun için yeni ... gözlerim bazı kan kaybını kaybediyor
git for-each-ref --format='%(color:cyan)%(authordate:format:%m/%d/%Y %I:%M %p) %(align:25,left)%(color:yellow)%(authorname)%(end) %(color:reset)%(refname:strip=3)' --sort=-authordate refs/remotes
diğer referanslar: https://stackoverflow.com/a/5188364/10643471