git - ความแตกต่างของการเปลี่ยนแปลงปัจจุบันก่อนที่จะกระทำ


106

ฉันได้เปลี่ยนไฟล์หลายไฟล์ในที่เก็บ git แต่ยังไม่ได้ยืนยัน

git statusฉันจะได้รับรายการของการเปลี่ยนแปลงโดยเพียงแค่ตื่นตาตื่นใจ แต่ฉันจะรับรายชื่อบรรทัดหรือเนื้อหาที่ฉันเปลี่ยนแปลงนอกเหนือจากชื่อไฟล์ได้อย่างไร

ตอนแรกฉันคิดเกี่ยวกับการใช้git diffแต่ดูเหมือนว่าจะมีประโยชน์สำหรับการเปรียบเทียบการเปลี่ยนแปลงที่กระทำไปแล้วเท่านั้น

โดยปกติฉันจะทำmeld .แต่ในกรณีนี้ฉันเชื่อมต่อกับเซิร์ฟเวอร์ภายนอกผ่าน ssh

คำตอบ:


153

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

หากคุณได้เพิ่ม ( จัดฉาก ) การเปลี่ยนแปลงในพื้นที่การจัดเตรียมไว้แล้วgit diff --stagedจะทำงาน พื้นที่การแสดงละครgit commitเป็นข้อมูลจากการที่ต่อไปจะมีการกระทำที่เกิดขึ้นจาก

PS Good reading (IMO) สำหรับผู้เริ่มต้น Git:

  • https://git-scm.com/book/en/v2 (บทส่วนใหญ่จะอธิบายโมเดลที่อยู่เบื้องหลัง Git และตอบคำถามทั่วไปส่วนใหญ่)
  • จากนั้นhttp://gitready.com/ทันที(เคล็ดลับการใช้งาน)

การจัดฉากไม่ใช้เฉพาะกับไฟล์ที่ยังไม่ได้เพิ่มใช่หรือไม่ คิดว่าคุณต้องใช้แฟล็กแคช
pbond

4
@peterbond man git-diffกล่าวว่า--staged is a synonym of --cached
Mischa Arefiev

2
@peterbond การจัดฉากทางเทคนิคหมายถึงการเพิ่มลงในพื้นที่การแสดงละครซึ่งยังไม่ได้กระทำ ฉันได้ชี้แจงว่าในการแก้ไข
Mischa Arefiev

1
@Mischa เอกสารระบุว่าพฤติกรรมเริ่มต้นสำหรับgit diffคือการคำนวณความแตกต่างระหว่างไดเร็กทอรีการทำงานและดัชนีไม่ใช่HEAD
Axel

มันไม่ได้เกิดขึ้นกับฉันที่จะเรียกใช้ git diff โดยไม่มี params ขอบคุณ!
kikito

10

สิ่งที่ฉันใช้สำหรับกรณีดังกล่าวคือ:

git diff HEAD *

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

git diff .

หรือ

git diff

หากต้องการดูการเปลี่ยนแปลงของgit addไฟล์ที่แก้ไขก่อนหน้านี้ให้ใช้stagedแฟล็ก:

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