การใช้เครื่องมือ DIFF ที่เป็นภาพ
คำตอบเริ่มต้น (ที่บรรทัดคำสั่ง)
คำตอบยอดนิยมที่นี่อย่างถูกต้องแสดงวิธีการดูการเปลี่ยนแปลงที่แคช / ฉากในIndex
:
$ git diff --cached
หรือ$ git diff --staged
ซึ่งเป็นนามแฝง
การเรียกใช้ Visual Diff Tool แทน
คำตอบเริ่มต้นจะคายการเปลี่ยนแปลง diff ที่ git bash (เช่นในบรรทัดคำสั่งหรือในคอนโซล) สำหรับผู้ที่ต้องการแสดงภาพความแตกต่างของไฟล์ฉากมีสคริปต์ที่มีอยู่ภายใน git ซึ่งเปิดตัวเครื่องมือ diff diff สำหรับแต่ละไฟล์ดูมากกว่าที่จะแสดงพวกเขาในบรรทัดคำสั่งที่เรียกว่าdifftool
:
$ git difftool --staged
สิ่งนี้จะทำเช่นเดียวกันกับgit diff --staged
ยกเว้นทุกครั้งที่มีการเรียกใช้เครื่องมือ diff (เช่นทุกครั้งที่ไฟล์ถูกประมวลผลโดย diff) มันจะเรียกใช้เครื่องมือ diff ที่เป็นภาพเริ่มต้น (ในสภาพแวดล้อมของฉันนี่คือkdiff3 )
หลังจากเครื่องมือเริ่มทำงานสคริปต์ diff git จะหยุดชั่วคราวจนกว่าเครื่องมือ diff ภาพของคุณจะปิด ดังนั้นคุณจะต้องปิดแต่ละไฟล์เพื่อดูไฟล์ถัดไป
คุณสามารถใช้difftool
แทนdiff
คำสั่งในคอมไพล์ได้
สำหรับความต้องการในการมองเห็นทั้งหมดของคุณgit difftool
จะทำงานแทนgit diff
คำสั่งใด ๆรวมถึงตัวเลือกทั้งหมด
ตัวอย่างเช่นหากต้องการให้มีการเปิดใช้เครื่องมือ visual diff โดยไม่ต้องถามว่าจะทำสำหรับแต่ละไฟล์หรือไม่ให้เพิ่ม-y
ตัวเลือก (ฉันคิดว่าโดยปกติคุณจะต้องการสิ่งนี้ !!):
$ git difftool -y --staged
ในกรณีนี้มันจะดึงแต่ละไฟล์ในเครื่องมือ visual diff ทีละไฟล์และจะเพิ่มขึ้นหนึ่งไฟล์ต่อไปหลังจากที่เครื่องมือถูกปิด
หรือดูความแตกต่างของไฟล์เฉพาะที่ถูกจัดฉากในIndex
:
$ git difftool -y --staged <<relative path/filename>>
สำหรับตัวเลือกทั้งหมดให้ดูหน้า man:
$ git difftool --help
การตั้งค่าเครื่องมือ Visual Git
หากต้องการใช้เครื่องมือ git แบบเห็นภาพอื่นที่ไม่ใช่ค่าเริ่มต้นให้ใช้-t <tool>
ตัวเลือก:
$ git difftool -t <tool> <<other args>>
หรือดูหน้า man difftool สำหรับวิธีการกำหนดค่า git ให้ใช้เครื่องมือ diff diff ที่เป็นค่าเริ่มต้นอื่น
ตัวอย่าง.gitconfig
รายการสำหรับ vscode เป็นเครื่องมือ diff / merge
ส่วนหนึ่งของการตั้งค่า difftool เกี่ยวข้องกับการเปลี่ยน.gitconfig
ไฟล์ไม่ว่าจะผ่านคำสั่ง git ที่เปลี่ยนไฟล์เบื้องหลังหรือแก้ไขโดยตรง
คุณสามารถค้นหา.gitconfig
ในโฮมไดเร็กตอรี่ของคุณ, เช่น~
ใน Unix หรือc:\users\<username>
บน Windows)
หรือคุณสามารถเปิดการใช้.gitconfig
ในการเริ่มต้นแก้ไข Git git config -e --global
ของคุณด้วย
นี่คือรายการตัวอย่างในผู้ใช้ทั่วโลกของฉัน.gitconfig
สำหรับรหัส VS เป็นทั้งเครื่องมือ diff และเครื่องมือผสาน:
[diff]
tool = vscode
guitool = vscode
[merge]
tool = vscode
guitool = vscode
[mergetool]
prompt = true
[difftool "vscode"]
cmd = code --wait --diff \"$LOCAL\" \"$REMOTE\"
path = c:/apps/vscode/code.exe
[mergetool "vscode"]
cmd = code --wait \"$MERGED\"
path = c:/apps/vscode/code.exe
git status -v
ทำงานเกินไป ดูคำตอบของฉันด้านล่าง