ฉันจะแสดงไฟล์ใน Git ที่เปลี่ยนแปลงบ่อยที่สุดได้อย่างไร
ฉันจะแสดงไฟล์ใน Git ที่เปลี่ยนแปลงบ่อยที่สุดได้อย่างไร
คำตอบ:
คุณสามารถใช้คำสั่งgit effort
(จากgit-extras
แพ็กเกจ) ซึ่งแสดงสถิติเกี่ยวกับจำนวนคอมมิตต่อไฟล์ (ตามคอมมิตและวันที่ใช้งาน)
แก้ไข: ความพยายามในการคอมไพล์เป็นเพียงสคริปต์ทุบตีที่คุณสามารถพบได้ที่นี่และปรับให้เข้ากับความต้องการของคุณหากคุณต้องการสิ่งที่พิเศษกว่านั้น
git help effort
ไม่มีข้อมูลเกี่ยวกับเรื่องนี้: /) ฉันถือว่าผลลัพธ์ชุดแรกเรียงลำดับตามชื่อไฟล์และชุดที่สองตามจำนวนคอมมิตต่อไฟล์ หน้าคนยังพูดถึงgithub.com/tj/git-extras/issuesเพื่อรายงานปัญหา
คุณสามารถทำสิ่งต่อไปนี้:
git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
บันทึกจะแสดงเพียงชื่อของไฟล์ที่มีการเปลี่ยนแปลงในแต่ละคอมมิตในขณะที่ส่วนที่เหลือจะจัดเรียงและส่งออกชื่อไฟล์ที่ปรากฏบ่อยที่สุด 10 อันดับแรก
--branches
การคอมมิตgit log
ในสาขาในพื้นที่ของคุณได้
--since "1 month ago"
หรือตัวเลือกอื่น ๆ เพื่อ จำกัด กรอบเวลาให้แคบลง
git log --pretty=format: --since="1 year ago" --name-only -- "*.java" | sort | uniq -c | sort -rg | head -10
roles
ไดเร็กทอรีสำหรับเคสของฉัน แต่สามารถแก้ไขได้อย่างง่ายดายเพื่อให้เหมาะกับกรณีการใช้งานของคุณ
สำหรับ powershell สมมติว่าคุณติดตั้ง git bash
git log --pretty=format: --name-only | sort | uniq -c | sort -Descending | select -First 10
นี่เป็นเวอร์ชัน windows
git log --pretty=format: --name-only > allfiles.csv
จากนั้นเปิดใน excel
A1: FileName
A2: isVisibleFilename >> =IFERROR(IF(C2>0,TRUE,FALSE),FALSE)
A3: DotLocation >> =FIND("@",SUBSTITUTE(A2,".","@",(LEN(A2)-LEN(SUBSTITUTE(A2,".","")))/LEN(".")))
A4: HasExt >> =C2>1
A5: TYPE >> =IF(D2=TRUE,MID(A2,C2+1,18),"")
สร้างตาราง Pivot
values: Type
Filter: isFilename = true
Rows : Type
Sub : FileName
click [Count Of TYPE] -> Sort -> Sort Largest To Smallest
git whatchanged --all | \grep "\.\.\." | cut -d' ' -f5- | cut -f2- | sort | uniq -c | sort
ถ้าคุณเพียงต้องการที่จะเห็นไฟล์ของคุณเพิ่มไป--author
git whatchanged --author=name --all
คำถามเก่า แต่ฉันคิดว่ายังคงเป็นคำถามที่มีประโยชน์มาก นี่คือตัวอย่างการทำงานใน PowerShell แบบตรง สิ่งนี้จะได้รับไฟล์ที่มีการเปลี่ยนแปลงมากที่สุด 10 อันดับแรกใน repo ของคุณตามสาขาที่คุณอยู่
git log --pretty=format: --name-only | Where-Object { ![string]::IsNullOrEmpty($_) } | Sort-Object | Group-Object | Sort-Object -Property Count -Descending | Select-Object -Property Count, Name -First 10
นอกจากนี้เรายังสามารถค้นหาไฟล์ที่เปลี่ยนแปลงระหว่างสองคอมมิตหรือกิ่งก้านได้เช่น
git log --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50
สิ่งนี้อาจชัดเจน แต่ข้อความค้นหาที่ให้ไว้จะแสดงไฟล์ทั้งหมด แต่บางทีคุณอาจไม่สนใจที่จะรู้ว่าไฟล์การกำหนดค่าหรือโครงการของคุณได้รับการอัปเดตมากที่สุด grep ธรรมดาจะแยกไฟล์โค้ดของคุณตัวอย่างเช่น:
git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20