ฉันรู้ว่า Git เก็บข้อมูลว่าเมื่อใดที่ไฟล์ถูกลบและฉันสามารถตรวจสอบความมุ่งมั่นของแต่ละบุคคลเพื่อดูว่ามีการลบไฟล์ใดบ้าง แต่มีคำสั่งที่จะสร้างรายการของไฟล์ที่ถูกลบในทุกช่วงอายุของที่เก็บหรือไม่
ฉันรู้ว่า Git เก็บข้อมูลว่าเมื่อใดที่ไฟล์ถูกลบและฉันสามารถตรวจสอบความมุ่งมั่นของแต่ละบุคคลเพื่อดูว่ามีการลบไฟล์ใดบ้าง แต่มีคำสั่งที่จะสร้างรายการของไฟล์ที่ถูกลบในทุกช่วงอายุของที่เก็บหรือไม่
คำตอบ:
git log --diff-filter=D --summary
ดูที่ค้นหาและกู้คืนไฟล์ที่ถูกลบในที่เก็บ Git
หากคุณไม่ต้องการข้อมูลทั้งหมดเกี่ยวกับการกระทำที่ถูกลบไปคุณสามารถเพิ่มgrep delete
ได้
git log --diff-filter=D --summary | grep delete
git log --find-renames --diff-filter=D --summary | grep delete
git log --no-renames --diff-filter=D --summary | grep delete
grep delete
เพราะถ้าข้อความคอมมิชชันมีคำว่า delete มันก็จะถูกเลือกเช่นกัน ใช้grep 'delete mode'
แทน
นี่คือสิ่งที่คุณต้องการฉันคิดว่า:
git log --all --pretty=format: --name-only --diff-filter=D | sort -u
... ซึ่งฉันเพิ่งได้คำตอบมากกว่านี้โดยตรง
หากคุณสนใจที่จะเห็นไฟล์ที่ถูกลบในปัจจุบันเท่านั้นคุณสามารถใช้สิ่งนี้:
git ls-files --deleted
ถ้าคุณต้องการที่จะลบพวกเขา (ในกรณีที่คุณลบพวกเขาไม่ได้ใช้ "git rm") ไปป์ที่ส่งผลให้ xargs git rm
git ls-files --deleted | xargs git rm
git rm $(git ls-files --deleted)
อ้างนี้คำตอบที่กองมากเกิน
เป็นวิธีที่ค่อนข้างเรียบร้อยในการรับการเปลี่ยนแปลง(A: เพิ่ม, M: แก้ไข, D: ลบ)สำหรับแต่ละไฟล์ที่มีการเปลี่ยนแปลง
git diff --name-status
และหากคุณต้องการ จำกัด ผลลัพธ์อย่างใดอย่างหนึ่ง
$ git log --diff-filter=D --summary | sed -n '/^commit/h;/\/some_dir\//{G;s/\ncommit \(.*\)/ \1/gp}'
delete mode 100644 blah/some_dir/file1 d3bfbbeba5b5c1da73c432cb3fb61990bdcf6f64
delete mode 100644 blah/some_dir/file2 d3bfbbeba5b5c1da73c432cb3fb61990bdcf6f64
delete mode 100644 blah/some_dir/file3 9c89b91d8df7c95c6043184154c476623414fcb7
คุณจะได้รับไฟล์ทั้งหมดที่ถูกลบจากsome_dir
(ดูคำสั่ง sed) พร้อมกับหมายเลขการกระทำที่เกิดขึ้น sed regex ใด ๆ ที่จะทำ (ฉันใช้สิ่งนี้เพื่อค้นหาประเภทไฟล์ที่ถูกลบ ฯลฯ )
git log --diff-filter=D .
เนื่องจาก Windows ไม่มีgrep
คำสั่งจึงเหมาะสำหรับฉันใน PowerShell:
git log --find-renames --diff-filter=D --summary | Select-String -Pattern "delete mode" | sort -u > deletions.txt
Select-String
อะไร
แสดงไฟล์ที่ถูกลบทั้งหมดในsome_branch
git diff origin/master...origin/some_branch --name-status | grep ^D
หรือ
git diff origin/master...origin/some_branch --name-status --diff-filter=D
git diff origin/master...origin/some_branch --name-status | grep ^D
หรือgit diff origin/master...origin/some_branch --name-status --diff-filter=D
นี่จะทำให้คุณเห็นรายการไฟล์ทั้งหมดที่ถูกลบในทุกสาขาโดยเรียงตามพา ธ :
git log --diff-filter=D --summary | grep "delete mode 100" | cut -c 21- | sort > deleted.txt
ทำงานใน msysgit (2.6.1.windows.1) โปรดทราบว่าเราต้องการ "ลบโหมด 100" เนื่องจากไฟล์คอมไพล์อาจถูกคอมมิทเป็นโหมด 100644 หรือ 100755
git diff --name-status commit_hash
จากที่หนึ่งกระทำกัญชาหรือสาขาอื่นทำเช่นนี้: