บันทึกคอมไพล์ของการแก้ไขเดียว


181

ฉันมีความมุ่งมั่นค ฉันต้องการได้รับเซ็ตการแก้ไขของค่าคอมมิชชัน c + metainformation ที่แน่นอนและไม่มีอันอื่น มีวิธีที่ง่ายกว่าgit log -p c^..cการทำเช่นนั้น?

คำตอบ:



60

คำตอบของ Michal Trybus นั้นดีที่สุดสำหรับความเรียบง่าย แต่ถ้าคุณไม่ต้องการ diff ในผลลัพธ์ของคุณคุณสามารถทำสิ่งต่าง ๆ เช่น:

git log -1 -U c

ที่จะให้บันทึกการกระทำและจากนั้นคุณจะสามารถควบคุมตัวเลือกการบันทึก git ทั้งหมดเพื่อวัตถุประสงค์อัตโนมัติของคุณ ในอินสแตนซ์ของคุณคุณบอกว่าคุณต้องการเปลี่ยนชุด วิธีที่มนุษย์สามารถอ่านได้มากที่สุดที่จะทำให้บรรลุผลนั่นคือ:

git log --name-status --diff-filter="[A|C|D|M|R|T]" -1 -U c

หรือถ้าคุณใช้เวอร์ชัน git มากกว่า 1.8.X มันจะเป็น:

git log --name-status --diff-filter="ACDMRT" -1 -U c

สิ่งนี้จะให้ผลลัพธ์ที่คล้ายกับคุณ:

commit {c}
Author: zedoo <zedoo@stackoverflow.com>
Date: Thu Aug 2 {time-stamp}

   {short description}
D    zedoo/foo.py
A    zedoo/bar.py

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


14
หากคุณไม่ต้องการความแตกต่างให้ทำgit show --name-only <sha1>!
dbn

16
git show -s <commit>หากคุณเพียงแค่ไม่ต้องการที่แตกต่างการใช้
moeffju

3
อะไร-1ทำอย่างไร เอกสารอยู่ที่ไหน
alex

1
@alex ดูผลลัพธ์ของgit help logภายใต้หัวข้อ "การ จำกัด การยอมรับ" หรือดูgit-scm.com/book/en/v2/… -<number>จำกัด จำนวนการส่งออก
LarsH

14

git log -p c -1 ทำแค่นั้น


4
-1 ทำอะไร เอกสารอยู่ที่ไหน
alex

4
alex @: "ที่ 1" จำกัด จำนวนรายการที่แสดงไปยังหมายเลขที่กำหนดก็สั้นมือ-n 1หรือ--max-number=1และเอกสารที่นี่
Derpasaurus

0

คุณสามารถใช้เพื่อกรองการเปลี่ยนแปลงตามคำอธิบายของการกระทำ:

git log --grep='part_of_description' -p

โดยที่git log --grep='part_of_description'เลือกการกระทำที่มี 'part_of_description' และ-pแสดงเซ็ตการแก้ไขของการส่งแต่ละรายการ

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