เมื่อฉันgit diff COMMITฉันเห็นการเปลี่ยนแปลงระหว่างความมุ่งมั่นนั้นและส่วนหัว (เท่าที่ฉันรู้) แต่ฉันอยากเห็นการเปลี่ยนแปลงที่เกิดขึ้นจากความมุ่งมั่นนั้น
ฉันไม่พบตัวเลือกที่ชัดเจนในdiff/ logที่จะให้ผลลัพธ์นั้นกับฉัน
เมื่อฉันgit diff COMMITฉันเห็นการเปลี่ยนแปลงระหว่างความมุ่งมั่นนั้นและส่วนหัว (เท่าที่ฉันรู้) แต่ฉันอยากเห็นการเปลี่ยนแปลงที่เกิดขึ้นจากความมุ่งมั่นนั้น
ฉันไม่พบตัวเลือกที่ชัดเจนในdiff/ logที่จะให้ผลลัพธ์นั้นกับฉัน
คำตอบ:
หากต้องการดูความแตกต่างของCOMMITแฮชเฉพาะ   :
git diff COMMIT~ COMMITจะแสดงความแตกต่างระหว่างCOMMITบรรพบุรุษของCOMMITคุณกับ ดู man page สำหรับgit diffสำหรับรายละเอียดเกี่ยวกับคำสั่งและgitrevisionsเกี่ยวกับ~สัญกรณ์และเพื่อนของมัน  
หรือgit show COMMITจะทำสิ่งที่คล้ายกันมาก (กระทำข้อมูลซึ่งรวมถึงความแตกต่างของ -. แต่ไม่กระทำการผสาน) ดูmanpage คอมไพล์โชว์
^จะต้องมีการเสนอราคาในเชลล์ Thomson และ Bourne (คำพ้องความหมายที่|นั่น) และrcอนุพันธ์ของมัน (ผู้ประกอบการดูแล) และzshด้วยการเปิดใช้งาน Extendedglob ( notโอเปอเรเตอร์
                    HEAD^หมายถึงผู้ปกครองคนแรกในกรณีที่กระทำมีหลายผู้ปกครอง (เช่นผสานกระทำ)
                    git diff COMMIT~ COMMITใช้งานได้สำหรับฉันสังเกตเครื่องหมายตัวหนอนแทนเครื่องหมายรูปหมวก ฉันใช้ git เวอร์ชัน 2.6.1.windows.1 บน Windows 10
                    ดังที่กล่าวไว้ใน " ชวเลขสำหรับความแตกต่างของคอมไพล์กับแม่ของมัน? " คุณยังสามารถใช้git diffกับ:
git diff COMMIT^!
หรือ
git diff-tree -p COMMIT
ด้วยการแสดง git คุณจะต้อง (เพื่อมุ่งเน้น diff คนเดียว) ทำ:
git show --color --pretty=format:%b $COMMIT
COMMITพารามิเตอร์เป็นish กระทำ- :
กระทำวัตถุหรือวัตถุที่สามารถ dereferenced ซ้ำการกระทำวัตถุ ต่อไปนี้คือการกระทำ - ishes ทั้งหมด: วัตถุการกระทำวัตถุแท็กที่ชี้ไปที่วัตถุที่กระทำวัตถุแท็กที่ชี้ไปที่วัตถุแท็กที่ชี้ไปที่วัตถุกระทำ ฯลฯ
ดูgitrevision "การกำหนด REVISIONS"เพื่ออ้างอิงการกระทำ 
ดูเพิ่มเติม " tree-ish มีความหมายอย่างไรใน Git "
คุณสามารถลองวิธีนี้ได้ง่ายๆ:
git show <COMMIT>
git show แสดงให้เห็นถึงการเปลี่ยนแปลงที่เกิดขึ้นในการกระทำล่าสุด 
git show HEADเทียบเท่า
git show HEAD~1 นำคุณกลับ 1 ข้อ
ฉันมักจะทำ:
git diff HEAD~1
เพื่อแสดงการเปลี่ยนแปลงที่เกี่ยวข้องกับการกระทำครั้งสุดท้าย หากคุณมีภาระผูกพันเพิ่มขึ้นเพียงเพิ่มหมายเลข 1 ให้เป็นจำนวนการผูกที่คุณต้องการดู
ก่อนอื่นให้รับ ID การยอมรับโดยใช้
git log #to list all
หรือ
git log -p -1 #last one commit id
คัดลอกรหัสกระทำ
ตอนนี้เราใช้สองวิธีเพื่อแสดงรายการการเปลี่ยนแปลงจากการกระทำที่เจาะจง
วิธีที่ 1:
git diff commit_id^!   #commit id something like this 1c6a6000asad012
วิธีที่ 2:
git show commit_id
For example: git show 1c6a600a
^!หมายถึง ??
                    git show <commit_sha>
สิ่งนี้จะแสดงให้คุณเห็นว่ามีอะไรเกิดขึ้นบ้าง ฉันคิดว่าคุณสามารถทำช่วงได้โดยเพียงแค่ใส่ช่องว่างระหว่างสองกระทำ shas
git show <beginning_sha> <ending_sha>
ซึ่งค่อนข้างมีประโยชน์หากคุณรีบูตบ่อยๆเพราะบันทึกคุณสมบัติของคุณจะอยู่ในแถว
จากหน้าคนสำหรับgit-diff (1) :
git diff [options] [<commit>] [--] [<path>…]
git diff [options] --cached [<commit>] [--] [<path>…]
git diff [options] <commit> <commit> [--] [<path>…]
git diff [options] <blob> <blob>
git diff [options] [--no-index] [--] <path> <path>
ใช้อันที่ 3 ตรงกลาง:
git diff [options] <parent-commit> <commit>
รวมทั้งจากหน้าคนเดียวกันที่ด้านล่างในส่วนตัวอย่าง :
$ git diff HEAD^ HEAD      <3>
เปรียบเทียบเวอร์ชันก่อนคอมมิทล่าสุดและคอมมิทล่าสุด
เป็นที่ทราบกันดีว่ามันเป็นคำที่สับสนเล็กน้อย
เปรียบเทียบการคอมมิชชันล่าสุดกับการคอมมิทก่อนหน้า
git diff HEAD HEAD^ของคุณจะนำไปใช้
                    ดูเหมือนว่าต่อไปนี้จะทำงาน; ฉันใช้มันเพื่อแสดงสิ่งที่ถูกผสานเข้าด้วยกัน
git whatchanged -m -n 1 -p <SHA-1 hash of merge commit>
git logหรือไม่ (เพราะstackoverflow.com/a/18585297/6309 )
                    ความเป็นไปได้อื่น:
git log -p COMMIT -1
คุณสามารถใช้git diff HEAD HEAD^1เพื่อดูความแตกต่างกับการกระทำหลัก
หากคุณต้องการเห็นรายการไฟล์เท่านั้นให้เพิ่ม--statตัวเลือก
diffคำสั่งคือสิ่งที่ฉันจะต้องมีการเปลี่ยนแปลงในแฟ้มที่จะได้รับจากการกระทำHEADที่จะกระทำHEAD^1?
                    git difftool COMMIT^ <commit hash>
เป็นไปได้เช่นกันหากคุณกำหนดค่า difftool ของคุณ
ดูที่นี่วิธีกำหนดค่า difftool หรือหน้าคู่มือได้ที่นี่
นอกจากนี้คุณสามารถใช้git diff-tree --no-commit-id --name-only -r <commit hash>เพื่อดูว่าไฟล์ใดที่ถูกเปลี่ยนแปลง / ถูกคอมมิตในแฮชการคอมมิต
ฉันชอบคำสั่งด้านล่างเพื่อเปรียบเทียบการกระทำที่เฉพาะเจาะจงและการกระทำที่ผ่านมา:
git diff <commit-hash>^-
ตัวอย่าง:
git diff cd1b3f485^-
git show COMMITหากต้องการดูผู้เขียนและเวลาโดยการกระทำการใช้งาน ซึ่งจะส่งผลดังนี้:
commit 13414df70354678b1b9304ebe4b6d204810f867e
Merge: a2a2894 3a1ba8f
Author: You <you@you.com>
Date:   Fri Jul 24 17:46:42 2015 -0700
     Merge remote-tracking branch 'origin/your-feature'
git diff --stat a2a2894 3a1ba8fหากคุณต้องการที่จะเห็นไฟล์ที่ได้รับการเปลี่ยนแปลงให้ดำเนินการดังต่อไปนี้ด้วยค่าจากบรรทัดผสานดังกล่าวข้างต้น
หากคุณต้องการดู diff ที่แท้จริงให้เรียกใช้ git --stat a2a2894 3a1ba8f
git --stat a2a2894 3a1ba8f". ฉันคิดว่าคุณหมายถึงหรืออื่น ๆgit diff a2a2894 3a1ba8f unknown option: --stat
                    สำหรับการตรวจสอบการเปลี่ยนแปลงทั้งหมด:
  git diff <commit_Id_1> <commit_Id_2>
สำหรับการตรวจสอบเฉพาะไฟล์ที่มีการเปลี่ยนแปลง / เพิ่ม / ลบ:
  git diff <commit_Id_1> <commit_Id_2> --name-only
หมายเหตุ : สำหรับการตรวจสอบความแตกต่างโดยไม่ต้องกระทำคุณไม่จำเป็นต้องใส่รหัสยืนยัน
ฉันใช้ Git เวอร์ชัน 2.6.1.windows.1 บน Windows 10 ดังนั้นฉันต้องการการแก้ไขเล็กน้อยเพื่อคำตอบของ Nevik (tilde แทนที่จะเป็น caret):
git diff COMMIT~ COMMIT
ตัวเลือกอื่นคือการพูดเครื่องหมายตกหลุม:
git diff "COMMIT^" COMMIT
คำสั่งนี้จะทำให้คุณได้รับแฮช parent-hash:
git log -n 2 <commit-hash>
หลังจากนั้น git diff-tool <commit-hash> <parent-commit-hash>
ตัวอย่าง:
bonnie@bonnie ~/ $ git log -n 2 7f65b9a9d3820525766fcba285b3c678e889fe3
commit 7f65b9a9d3820525766fcba285b3c678e889fe3b
Author: souparno <souparno.majumder@gmail.com>
Date:   Mon Jul 25 13:17:07 2016 +0530
CSS changed to maintain the aspect ratio of the channel logos and to fit them properly.
commit c3a61f17e14e2b80cf64b172a45f1b4826ee291f
Author: souparno <souparno.majumder@gmail.com>
Date:   Mon Jul 25 11:28:09 2016 +0530
The ratio of the height to width of the channel images are maintained.
หลังจากนี้
git difftool 7f65b9a9d3820525766fcba285b3c678e889fe3b c3a61f17e14e2b80cf64b172a45f1b4826ee291f
หากคุณเพียงแค่ต้องการเห็นการเปลี่ยนแปลงในการกระทำล่าสุดก็git showจะให้คุณ
ในกรณีที่ตรวจสอบการเปลี่ยนแปลงของแหล่งที่มาในมุมมองกราฟิก
$gitk (Mention your commit id here)
ตัวอย่างเช่น:
$gitk HEAD~1