รับคอมไพล์ทั้งหมดตั้งแต่แท็กสุดท้าย


127

เมื่อฉันจะแท็กคอมมิตฉันจำเป็นต้องรู้ว่ามีอะไรเปลี่ยนแปลงไปบ้างตั้งแต่คอมมิตที่แท็กล่าสุด เช่น:

a87a6sdf87a6d4 Some new feature
a87a6sdf87a6d3 Some bug fix
a87a6sdf87a6d2 Some comments added
a87a6sdf87a6d1 Some merge <- v1.4.0

ในตัวอย่างนี้ฉันต้องการทราบเกี่ยวกับการคอมมิตใหม่ล่าสุด 3 รายการหรือสามารถพิมพ์บันทึกได้เหมือนข้างบนซึ่งแสดงว่าทั้งสองคอมมิตแท็กของพวกเขาถ้ามี และเมื่อฉันเห็นว่ามีการเพิ่มคุณสมบัติใหม่ฉันจะติดแท็ก v1.5.0

คุณจัดการกับเรื่องนี้อย่างไร? ฉันควรจะใช้แท็กหรือไม่ ฉันควรเขียนอะไรในข้อความแท็ก ฉันมักจะเว้นว่างไว้เสมอ:git tag -a v1.2.3 -m ''

คำตอบ:


224

git log <yourlasttag>..HEAD ?

หากคุณต้องการให้เหมือนในตัวอย่างของคุณในบรรทัดเดียวที่มีการกระทำ id + ข้อความจากนั้น

git log <yourlasttag>..HEAD --oneline

และในกรณีที่คุณไม่รู้จักแท็กล่าสุดของคุณหรือต้องการให้สิ่งนี้เป็นแบบไดนามิกบน windows คุณสามารถทำได้

for /f "delims=" %a in ('git describe --tags --abbrev^=0') do @set latesttag=%a
git log %latesttag%..HEAD --oneline

และบน linux / git bash / windows bash

git log $(git describe --tags --abbrev=0)..HEAD --oneline

นอกจากนี้หากคุณมีกรณีที่คุณรู้จักแท็กในประวัติและต้องการพิมพ์ทุกอย่างตั้งแต่แท็กนั้นจนถึงสถานการณ์ปัจจุบันคุณอาจต้องการเพิ่มด้วย--decorateเพื่อให้แท็กนั้นพิมพ์ออกมาระหว่างกัน


มีวิธีใดบ้างที่จะข้ามการรวมคอมมิต
Holloway

@Trengot ไม่รู้ยังไม่ได้ดูเลย การรวม IMO เป็นสิ่งที่ควรหลีกเลี่ยงอยู่แล้วฉันใช้ rebasing แทนทุกครั้งที่ทำได้
eis

เวอร์ชัน linux ใช้งานได้กับ Git สำหรับ Windows Bash
kwesolowski

มันควรจะ<yourlasttag>+1 ไม่ใช่เหรอ?
Raffi Khatchadourian

@RaffiKhatchadourian หากคุณทำเช่นนั้นคุณจะพลาดการเปลี่ยนแปลงที่กระทำในการกระทำ<yourlasttag>+1 และคุณจะได้รับการเปลี่ยนแปลงหลังจากนั้นเท่านั้น
eis

40

หากการคอมมิตปัจจุบันของคุณเป็นแท็กด้วยและคุณต้องการรับการเปลี่ยนแปลงแบบไดนามิกตั้งแต่แท็กก่อนหน้าโดยไม่ทราบแท็กล่าสุดหรือชื่อแท็กก่อนหน้าคุณสามารถทำได้:

git log --oneline $(git describe --tags --abbrev=0 @^)..@

โปรดทราบว่า@ย่อมาจากHEAD.


ดี! ถ้าเพียงแค่ต้องการให้ข้อความคอมมิตเปลี่ยน --oneline เป็น --pretty = format: "% s": git log --pretty = format: "% s" $ (git อธิบาย --tags --ab ชื่อย่อ = 0 @ ^) .. @
JBarbosa
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.