ทำรายการผู้พัฒนาทั้งหมดในโครงการใน Git


206

เป็นไปได้ไหมที่จะแสดงรายชื่อผู้ใช้ทั้งหมดที่มีส่วนร่วมในโครงการ (ผู้ใช้ที่ได้ทำสัญญาไว้) ใน Git?

สถิติเพิ่มเติมใด ๆ

คำตอบ:


388

วิธีแสดงผู้ใช้และอีเมลทั้งหมดและจำนวนการกระทำในสาขาปัจจุบัน:

git shortlog --summary --numbered --email

หรือเพียงแค่:

git shortlog -sne

ในการแสดงผู้ใช้จากทุกสาขา (ไม่ใช่เฉพาะในสาขาปัจจุบัน) คุณต้องเพิ่มการ--allตั้งค่าสถานะ:

git shortlog -sne --all

3
โปรดทราบว่าหากคุณต้องการใช้คำสั่งนี้จากภายในสคริปต์หรือบางอย่างเช่น "ant" คุณต้องระบุการแก้ไขหรือจะไม่แสดงผลใด ๆ สำหรับการแก้ไขในปัจจุบันคุณสามารถใช้ HEAD:git shortlog -sn HEAD
Majenko

59
-eที่จะได้รับที่อยู่อีเมลเช่นกันเพิ่ม
mic_e

10
ในการแสดงผู้ใช้จากทุกสาขา (ไม่เฉพาะที่อยู่ในสาขาปัจจุบัน) คุณต้องเพิ่มการ--allตั้งค่า
Gian Marco Gherardi

3
เกิดอะไรขึ้นถ้าฉันไม่ต้องการจำนวนการกระทำ
Wearybands

1
นอกจากนี้ยังเหมาะสำหรับการตรวจสอบว่าใครแตะไฟล์ใดไฟล์หนึ่งมากกว่าทั้งโครงการ git shortlog --summary --numbered <pathToFile>
jxramos

40

หากคุณต้องการเฉพาะเจาะจงมากขึ้นในรายการ (ค้นหารายชื่อผู้ส่งและผู้เขียนเฉพาะ) คุณสามารถใช้git log:

git log --pretty="%an %ae%n%cn %ce" | sort | uniq
  • %an ชื่อผู้แต่ง
  • %ae อีเมลผู้แต่ง
  • %n บรรทัดใหม่
  • %cn ชื่อผู้เดินทาง
  • %ce อีเมลผู้ส่ง

ตัวยึดตำแหน่งอื่น ๆ ที่อธิบายไว้ในเอกสารการพิมพ์สวยgit log


ฉันคิดว่า%nมันไม่สมเหตุสมผลมากเมื่อรวมกับ (อิงตามบรรทัด) sortใช่ไหม? บรรทัดบันทึกชื่อผู้แต่ง / ผู้ส่ง / อีเมลในบรรทัดแยกกัน แต่เรียงลำดับเอาท์พุททั้งหมด ...
ssc

อีเมลของผู้มอบหมาย @ssc อาจแตกต่างจากอีเมลผู้แต่ง % n สำหรับบรรทัดใหม่เพื่อค้นหาความแตกต่าง
Guillaume Vincent

19

คุณสามารถลองสิ่งนี้:

git log | grep Author: | sort | uniq

1
นี่เป็นคำสั่งที่มีประโยชน์ที่สุดสำหรับทุกคนที่สนใจในการอัพเดทไฟล์. mailmap!
Ahi Tuna

7

(ผู้ใช้ที่ได้กระทำไปแล้ว)

หมายเหตุ: โดยค่าเริ่มต้นgit shortlogกลุ่มกระทำโดยผู้เขียน

หากคุณต้องการจัดกลุ่มโดยผู้มอบหมายคุณจะต้องใช้ Git 2.12 (ไตรมาสที่ 1 ปี 2560)

git shortlog -snc

ดูกระทำ 03f4082 (16 ธันวาคม 2016) โดยเจฟฟ์คิง (peff )
ดูกระทำ fbfda15 (11 ตุลาคม 2016) โดยLinus Torvalds (torvalds )
(ผสานโดยJunio ​​C Hamano - gitster- in ad1b4e2 , 27 Dec 2016)

Linus Torvalds แนะนำคุณสมบัตินี้:

shortlog: จัดกลุ่มตามข้อมูลผู้ส่ง

ในบางสถานการณ์คุณอาจต้องการจัดกลุ่มการคอมมิทไม่ใช่โดยผู้แต่ง แต่โดยคอมมิชชันแทน

ตัวอย่างเช่นเมื่อฉันแค่ต้องการค้นหาสิ่งที่ฉันยังขาดหายไปจากlinux-nextหน้าต่างผสานปัจจุบันฉันไม่สนใจเลยว่าใครเขียนแพทช์เหมือนที่git treeมาจากซึ่งโดยทั่วไปแล้วจะเดือดลงไป "ผู้ที่มุ่งมั่น มัน".

ดังนั้นทำให้ shortit คอมไพล์ใช้ตัวเลือก " -c" หรือ " --committer" เพื่อสลับการจัดกลุ่มไปที่



1

ฉันยังไม่ได้ทำการทดสอบด้วยตัวเอง แต่สิ่งนี้ดูดีมากสำหรับสถิติโครงการสำหรับที่เก็บ Git: https://github.com/visionmedia/git-extras

ตรวจสอบbinแคตตาล็อกเพื่อดูสคริปต์ที่แตกต่างกัน

ตัวอย่างเช่นgit-countสคริปต์ (ส่งนับการกระทำต่อคอมมิชชัน):

git shortlog -n $@ | grep "):" | sed 's|:||'

1
shortlog คอมไพล์ -ns ดูเหมือน
แฮ็

@TomDLT ตั้งแต่ฉันโพสต์เมื่อ 4 ปีที่แล้วสคริปต์ตัวอย่างนี้ใน git-extras เปลี่ยนไป แต่ฉันคิดว่าคำแนะนำของฉันในการดูสคริปต์ git จากโครงการต่างๆเช่น git-extras หรือจาก dotfiles ของผู้คนยังคงเป็นคำแนะนำที่ดี หากคุณกำลังมองหาคำสั่ง git ที่น่าสนใจฉันจะแนะนำ dotfiles ของ Gary Bernhardt เช่นกัน: github.com/garybernhardt/dotfiles/tree/master/bin
Daniel Lee

1

คำตอบที่ยอดเยี่ยมโดย @ pedro-nascimento โดย @mic_e และคนอื่น ๆ แก้ปัญหาแล้ว

นอกจากนี้คุณสามารถเพิ่มบรรทัดต่อไปนี้ใน .gitconfig

contributors = shortlog -e --summary --numbered

หรือในประเภทเปลือก

git config --global alias.contributors 'shortlog -e --summary --numbered'

และหลังจากนั้นคุณสามารถเรียกใช้: git contributors


1
คุณควรจะเพิ่มหมายเหตุว่าหลังจากตั้งค่าสิ่งนี้คุณสามารถโทรgit contributors
lohfu

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.