ฉันจะเรียกใช้บันทึก git เพื่อดูการเปลี่ยนแปลงเฉพาะสาขาได้อย่างไร


395

ฉันมีสาขาในพื้นที่ติดตามสาขาระยะไกล / หลัก หลังจากทำงานgit-pullและgit-logบันทึกจะแสดงข้อผูกพันทั้งหมดในสาขาการติดตามระยะไกลเช่นเดียวกับสาขาปัจจุบัน อย่างไรก็ตามเนื่องจากมีการเปลี่ยนแปลงหลายอย่างในสาขาระยะไกลฉันจึงต้องดูเพียงข้อผูกพันที่เกิดขึ้นกับสาขาท้องถิ่นปัจจุบัน

อะไรคือคำสั่ง Git ที่ใช้เพื่อแสดงการกระทำสำหรับสาขาเฉพาะเท่านั้น

หมายเหตุ:

ข้อมูลการกำหนดค่า:

[branch "my-branch"]
  remote = origin
  merge = refs/heads/master

คำตอบ:


526

สมมติว่าสาขาของคุณถูกสร้างขึ้นจากmasterนั้นในขณะที่อยู่ในสาขา (นั่นคือคุณมีสาขาที่เช็คเอาท์):

git cherry -v master

หรือ

git log master..

หากคุณไม่ได้อยู่ในสาขาคุณสามารถเพิ่มชื่อสาขาในคำสั่ง "git log" เช่นนี้:

git log master..branchname

หากสาขาของคุณถูกทำออกของorigin/masterแล้วพูดแทนorigin/mastermaster


100
ที่สมบูรณ์แบบ! git log --no-merges master..เป็นสิ่งที่ฉันต้องการ
ทางหลวงของชีวิต

3
@ HighwayofLife: --no-mergesอาจปรากฏว่าเป็นเพียงการแสดงความมุ่งมั่นจากสาขาที่เฉพาะเจาะจง แต่เป็นเพียงการแสดงความมุ่งมั่นที่ไม่ส่งผลให้เกิดการรวมกัน
rynmrtn

5
วิธีการเกี่ยวกับวิธีการที่ไม่ต้องการให้ฉันพิมพ์ / รู้สาขาผู้ปกครอง? :)
ELLIOTTCABLE

1
เพื่อให้เข้าใจถึงอัตราการเปลี่ยนแปลงฉันใช้คาถาต่อไปนี้ซึ่งสร้างรูปแบบบันทึกหนึ่งบรรทัดโดยมีชื่อผู้แต่งปรากฏก่อนตามด้วยอายุสัมพัทธ์:git log --no-merges --pretty='%C(yellow)%h%d %Creset%an %Cgreen%ar:%Creset %s' --graph master..
Noah Sussman

2
ไม่ควรอ่านหรือ git log master .. <สาขาของคุณ> - ออนไลน์ - ไม่มีการรวม
อเล็กซ์ Nolasco

104

ใช้:

git log --graph --abbrev-commit --decorate  --first-parent <branch_name>

มันเป็นเพียงสำหรับสาขาเป้าหมาย (แน่นอน - กราฟ, --abbrev-commit - ตกแต่งเสร็จขัดมากขึ้น)

ตัวเลือกที่สำคัญคือ - ผู้ปกครองคนแรก: "ติดตามเฉพาะผู้ปกครองคนแรกที่กระทำเมื่อเห็นการรวมการกระทำ" ( https://git-scm.com/docs/git-log )

มันป้องกันมิให้ส้อมแสดงผล


25
--first-parent <branch_name>เป็นตัวเลือก ได้ผล!
parasrish

3
สาขาไหนชื่ออะไรสาขาที่มีประวัติฉันต้องการดูเท่านั้น ในสาขาที่มีการเปลี่ยนแปลงเพียง 3 ครั้งนี่แสดงให้ฉันเห็นเป็นร้อย
Ed Randall

1
--first-parent <branch_name>ยังทำงานให้ฉัน! ฉันลงเอยด้วยนามแฝงgit log --first-parent $current_branch_name --no-mergesว่า ในการตอบสนองต่อ @EdRandall มันจะแสดงความมุ่งมั่นในสาขา + ที่มาจากที่มันถูกแยก ตัวอย่างเช่น:
rachel

2
อุ๊ปส์ฉันส่งถึงเร็ว ๆ นี้นี่คือตัวอย่าง: คุณยอมรับ A และ B เป็นหลัก คุณแยกnew_featureจากปริญญาโท คุณเพิ่มคอมมิชชัน C และ D จากนั้นคุณเพิ่ม E และ F เป็นหลัก new_featureจากนั้นคุณจะผสานต้นแบบ ใช้git logบนnew_featureคุณจะเห็น "การผสานต้นแบบ", F, E, D, C, A, B. ใช้git log --first-parent new_feature --no-mergesคุณจะเห็น D, C, A, บี
ราเชล

24

หากคุณต้องการเฉพาะการกระทำที่คุณทำในสาขาเฉพาะให้ใช้คำสั่งด้านล่าง

git log branch_name --author='Dyaniyal'

13

ปัญหาที่ฉันมีซึ่งฉันคิดว่าคล้ายกับเรื่องนี้คืออาจารย์คนนั้นอยู่ไกลเกินกว่าที่จะแยกสาขาของฉันเพื่อให้ประวัติศาสตร์มีประโยชน์ (การนำทางไปยังจุดสาขาอาจใช้เวลานานเกินไป)

หลังจากการลองผิดลองถูกสิ่งนี้ทำให้ฉันคร่าวๆว่าฉันต้องการอะไร:

git log --graph --decorate --oneline --all ^master^!

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