ให้บอกว่าฉันมี repo คอมไพล์ที่มีลักษณะเช่นนี้
foo/
.git/
A/
... big tree here
B/
... big tree here
มีวิธีขอให้บันทึก git เพื่อแสดงเฉพาะข้อความบันทึกสำหรับไดเรกทอรีเฉพาะ ตัวอย่างเช่นฉันต้องการดูไฟล์คอมมิทที่ยอมรับใน foo / A เท่านั้น?
ให้บอกว่าฉันมี repo คอมไพล์ที่มีลักษณะเช่นนี้
foo/
.git/
A/
... big tree here
B/
... big tree here
มีวิธีขอให้บันทึก git เพื่อแสดงเฉพาะข้อความบันทึกสำหรับไดเรกทอรีเฉพาะ ตัวอย่างเช่นฉันต้องการดูไฟล์คอมมิทที่ยอมรับใน foo / A เท่านั้น?
คำตอบ:
จากไดเรกทอรีfoo/
ใช้
git log -- A
คุณต้องใช้ '-' เพื่อแยกออก<path>..
จากการ<since>..<until>
อ้างอิง
# Show changes for src/nvfs
$ git log --oneline -- src/nvfs
d6f6b3b Changes for Mac OS X
803fcc3 Initial Commit
# Show all changes (one additional commit besides in src/nvfs).
$ git log --oneline
d6f6b3b Changes for Mac OS X
96cbb79 gitignore
803fcc3 Initial Commit
A
และ B
ไม่เพียง แต่A
เป็น OP ที่ร้องขอ
A
เท่านั้นตามที่ OP ร้องขอ
คุณสามารถใช้git log
กับชื่อพา ธ ของโฟลเดอร์ที่เกี่ยวข้อง:
git log A B
เข้าสู่ระบบจะแสดงเฉพาะกระทำที่เกิดขึ้นในและA
B
ฉันมัก--stat
จะทำสิ่งต่าง ๆ ให้สวยขึ้นเล็กน้อยซึ่งช่วยในการรีวิวอย่างรวดเร็ว
สำหรับการติดตามการเปลี่ยนแปลงในโฟลเดอร์ที่ย้ายโฟลเดอร์ฉันเริ่มใช้:
git rev-list --all --pretty=oneline -- "*/foo/subfoo/*"
มันไม่สมบูรณ์แบบเพราะจะใช้โฟลเดอร์อื่นที่มีชื่อเหมือนกัน แต่ถ้ามันไม่เหมือนใครมันก็ใช้ได้
คำตอบอื่น ๆ แสดงเฉพาะไฟล์ที่เปลี่ยนแปลงเท่านั้น
git log -p DIR
มีประโยชน์มากหากคุณต้องการส่วนต่างของไฟล์ที่เปลี่ยนแปลงทั้งหมดในไดเรกทอรีย่อยที่ระบุ
ตัวอย่าง: แสดงการเปลี่ยนแปลงโดยละเอียดทั้งหมดในช่วงรุ่นที่ระบุ
git log -p 8a5fb..HEAD -- A B
commit 62ad8c5d
Author: Scott Tiger
Date: Mon Nov 27 14:25:29 2017 +0100
My comment
...
@@ -216,6 +216,10 @@ public class MyClass {
+ Added
- Deleted