บางครั้งเมื่อฉันกำลังจะทำการคอมมิตฉันจำไม่ได้ว่ามีอะไรเปลี่ยนแปลงไปบ้างตั้งแต่ครั้งสุดท้าย ฉันจะเห็นความแตกต่างของสถานะปัจจุบันของรหัสและการคอมมิตล่าสุดได้อย่างไร
บางครั้งเมื่อฉันกำลังจะทำการคอมมิตฉันจำไม่ได้ว่ามีอะไรเปลี่ยนแปลงไปบ้างตั้งแต่ครั้งสุดท้าย ฉันจะเห็นความแตกต่างของสถานะปัจจุบันของรหัสและการคอมมิตล่าสุดได้อย่างไร
คำตอบ:
หากคุณยังไม่ได้เพิ่มไฟล์ใด ๆ ลงในดัชนี (ด้วยgit add) ให้ทำ
git diff
สิ่งนี้จะแสดงความแตกต่างระหว่างแผนผังการทำงานและดัชนีของคุณ
หากคุณได้เพิ่มไฟล์ลงในดัชนีคุณต้องทำเช่นนี้เพื่อแสดงความแตกต่างระหว่างดัชนีและการกระทำสุดท้าย (HEAD)
git diff --cached
สุดท้ายหากคุณต้องการดูการเปลี่ยนแปลงที่เกิดขึ้นในโครงสร้างการทำงานเทียบกับการกระทำล่าสุด ( HEAD) คุณสามารถทำได้ (ตามที่คาร์ลอสชี้ให้เห็น)
git diff HEAD
การเปลี่ยนแปลงเหล่านี้คือการรวมกันของและgit diffgit diff --cached
git diffที่สถานะของดัชนีและการกระทำก่อนหน้าในข้อความที่แตกต่างกัน?
git diff --cached HEAD^:)
หากคุณเพิ่งทำการคอมมิตหรือต้องการดูว่ามีการเปลี่ยนแปลงอะไรในการคอมมิตล่าสุดเทียบกับสถานะปัจจุบัน (สมมติว่าคุณมีโครงสร้างการทำงานที่สะอาด) คุณสามารถใช้:
git diff HEAD^
สิ่งนี้จะเปรียบเทียบ HEAD กับการกระทำก่อนหน้านี้ทันที หนึ่งสามารถทำได้
git diff HEAD^^
เพื่อเปรียบเทียบกับสถานะการเล่น 2 คอมมิตที่ผ่านมา หากต้องการดูความแตกต่างระหว่างสถานะปัจจุบันและการกระทำบางอย่างให้ทำดังนี้
git diff b6af6qc
ในกรณีที่b6af6qcเป็นตัวอย่างของหนึ่งกระทำกัญชา
HEAD^คือคอมมิตก่อนคอมมิตล่าสุด
คุณขอให้คอมไพล์ต่างค่าคอมมิตปัจจุบัน / สุดท้ายซึ่งมีชวเลขของHEAD.
ดังนั้นgit diff HEADจะเปรียบเทียบสถานะปัจจุบันของ worktree กับคอมมิตปัจจุบัน
สิ่งนี้ยังแสดงให้เห็นถึงความแตกต่างและไฟล์ใดบ้างที่มีการเปลี่ยนแปลง / แก้ไข
$ git status
แสดงพา ธ ที่มีความแตกต่างระหว่างไฟล์ดัชนีและการคอมมิต HEAD ปัจจุบันพา ธ ที่มีความแตกต่างระหว่างแผนผังการทำงานและไฟล์ดัชนีและพา ธ ในแผนผังการทำงานที่ไม่ถูกติดตามโดย git (และ gitignore ไม่ถูกละเว้น (5) ). อย่างแรกคือสิ่งที่คุณจะกระทำโดยเรียกใช้คอมมิต; อันที่สองและสามคือสิ่งที่คุณสามารถกระทำได้โดยการรัน git add ก่อนที่จะรันคอมมิตคอมไพล์
https://www.kernel.org/pub/software/scm/git/docs/git-status.html
สิ่งนี้ใช้ได้กับฉันด้วย:
# The last one
git diff HEAD~1 HEAD
# The last but one, etc...
git diff HEAD~2 HEAD~1
โดยปกติจะใช้ได้กับประวัติเชิงเส้น สิ่งนี้อาจยุ่งยากมากขึ้นหากมีการรวมคอมมิตด้วย ฉันขอแนะนำให้คุณดูเอกสารนี้เพื่อรับคำอธิบายที่ดีและสมบูรณ์โดยเฉพาะตัวอย่างภาพประกอบต้นไม้:
git diffเปรียบเทียบ worktree กับดัชนีไม่ใช่ HEAD