สมมติว่าฉันมีไฟล์foo.js
ที่ถูกคอมมิทเมื่อไม่นานมานี้ ฉันต้องการค้นหาการกระทำที่ไฟล์นี้ถูกเพิ่มครั้งแรก
หลังจากอ่านคำตอบและการซ่อมแซมของฉันแล้วมันก็ใช้ได้กับฉัน
git log --follow --diff-filter=A --find-renames=40% foo.js
สมมติว่าฉันมีไฟล์foo.js
ที่ถูกคอมมิทเมื่อไม่นานมานี้ ฉันต้องการค้นหาการกระทำที่ไฟล์นี้ถูกเพิ่มครั้งแรก
หลังจากอ่านคำตอบและการซ่อมแซมของฉันแล้วมันก็ใช้ได้กับฉัน
git log --follow --diff-filter=A --find-renames=40% foo.js
คำตอบ:
นี่เป็นวิธีที่ง่ายกว่า "pure Git" โดยไม่ต้องมีขั้นตอน:
git log --diff-filter=A -- foo.js
ตรวจสอบเอกสารประกอบ คุณสามารถทำสิ่งเดียวกันกับ Deleted, Modified และอื่น ๆ
https://git-scm.com/docs/git-log#Documentation/git-log.txt---diff-filterACDMRTUXB82308203
ฉันมีนามแฝงที่มีประโยชน์สำหรับสิ่งนี้เพราะฉันลืมมันเสมอ:
git config --global alias.whatadded 'log --diff-filter=A'
ทำให้ง่ายเหมือน:
git whatadded -- foo.js
ซับด้านล่างหนึ่งจะค้นหาซ้ำในไดเรกทอรีย่อยของ$PWD
for foo.js
โดยไม่ต้องระบุและพา ธ สัมบูรณ์หรือพา ธ สัมพัทธ์ไปยังไฟล์และไฟล์นั้นจะต้องอยู่ในไดเรกทอรีเดียวกันกับ$PWD
git log --diff-filter=A -- **foo.js
git log --diff-filter=A -- foo.js
ไม่ได้พิมพ์ กระทำ ID / แฮชไปที่ STDOUT ในเทอร์มินัลของฉันฉันต้องจัดเตรียมพา ธ สัมพัทธ์ไปยังไฟล์จากราก git repo เพื่อให้ได้ผลลัพธ์ที่ต้องการ
git log --oneline -- foo.js | tail -n 1
--follow
ฉันจะมีความสุขที่จะมี
ต่อไปนี้อาจไม่เป็นที่สนใจของคุณ แต่ฉันคิดว่ามันจะช่วยคุณในอนาคตและเป็นส่วนหนึ่งของการแก้ไขข้อบกพร่องของระบบนิเวศใน Git:
คุณสามารถใช้git-blame
เพื่อแสดงสิ่งที่แก้ไขและผู้เขียนแก้ไขล่าสุดแต่ละบรรทัดของไฟล์โดยเฉพาะคำอธิบายประกอบไฟล์ เยี่ยมชมhttps://git-scm.com/book/en/v2/Git-Tools-Debugging-with-Git
ตัวอย่างเช่น,
git blame -L 174,190 xx.py
git log --diff-filter=A -- *subfolder/foo.js