วิธีสร้าง git diff --ignore-space-change the default


110

ฉันอาจตั้งนามแฝงได้ แต่ดูเหมือนว่าฉันควรจะตั้งค่านี้เป็นตัวเลือกในไฟล์กำหนดค่าได้ แต่ฉันไม่เห็นว่าจะทำต่อไป

ฉันต้องการเฉพาะ--ignore-space-changeเวลาที่ฉันทำสิ่งที่แตกต่างไม่ใช่ตอนที่ฉันสมัครหรืออย่างอื่น ฉันพยายามทำให้ความแตกต่างง่ายต่อการเข้าใจโดยไม่ทำให้มันยุ่งเหยิงด้วยเส้น +/- ภายนอกที่ไม่มีการเปลี่ยนแปลงที่แท้จริง


2
สนใจที่จะเปลี่ยนคำตอบที่ถูกต้อง? :)
igorsantos07

1
ตอนนี้มีทางลัดgit diff -wซึ่งเป็นทางลัดสำหรับ --ignore-all-space: ละเว้นช่องว่างเมื่อเปรียบเทียบเส้น สิ่งนี้จะไม่สนใจความแตกต่างแม้ว่าบรรทัดหนึ่งจะมีช่องว่างโดยที่อีกบรรทัดไม่มี
João Pimentel Ferreira

คำตอบ:


22

ตามคู่มือ Git Config ไม่มีตัวเลือกดังกล่าว ทางเลือกเดียวของคุณคือสร้างนามแฝง

http://git-scm.com/docs/git-config


ฉันคิดว่าจากการอ่านหน้านั้นด้วย ฉันหวังว่าจะมีคนรู้วิธีที่ไม่ได้บันทึกไว้ ....
boatcoder

@ ด็อกเบิร์ต - ฉันมีปัญหาเดียวกันเฉพาะเมื่อฉันทำการเพิ่ม git -p <file_name> มีข้อเสนอแนะหรือไม่
Guy Avraham

@ JoãoPimentelFerreiraนั่นไม่ได้ทำให้เป็นค่าเริ่มต้น
DylanYoung

มีตัวเลือกดังกล่าวstackoverflow.com/a/53054020/1243247
João Pimentel Ferreira

99

คุณสามารถใช้git aliasหรือbash alias ได้หากคุณใช้ระบบปฏิบัติการที่มีเชลล์

  1. git alias : รันคำสั่งนี้เพื่อเพิ่มนามแฝง:

    git config --global alias.dfw 'diff --ignore-space-change'

    --ignore-space-change can be abbreviated to -w
    เพื่อใช้นามแฝงโดยใช้: git dfw

  2. bash alias : รันคำสั่งนี้เพื่อเพิ่ม bash alias:

    echo "alias gitdfw='git diff --ignore-space-change'">>~/.profile

    เปิดเทอร์มินัลใหม่และคุณสามารถเรียกใช้โดยตรงgitdfwเพื่อให้บรรลุสิ่งเดียวกัน


8
นี่ควรเป็นคำตอบที่ได้รับการยอมรับเนื่องจากมีประโยชน์จริงโดยมีตัวอย่างมากกว่า "ไปที่ URL นี้"
DrStrangepork

7
อ้างอิงถึงเอกสาร Git ปัจจุบัน , เป็นเช่นเดียวกับ-b --ignore-space-changeมันสอดคล้องกับลินุกซ์diffคำสั่งที่หมายถึง-w --ignore-all-spaceมันเป็นความแตกต่างที่สำคัญเพราะตัวอย่างเช่นข้อความที่a b cมีการพิจารณาเช่นเดียวกับabcที่มี-wตัวเลือก; ในรหัสนี่ไม่น่าจะเป็นสิ่งที่คุณต้องการดังนั้นจึง-bเป็นตัวเลือกที่ดีกว่า
Richard Wiseman

11

ฉันเห็นด้วยกับคำตอบ Dogbert ของว่ามันอาจจะดีที่สุดเพียงแค่ใช้นามแฝง แต่อีกทางเลือกหนึ่งคือการตั้งค่าตัวเลือกการตั้งค่าdiff.externalไปยังสคริปต์เสื้อคลุมว่าสายกับdiff-b


10

แก้ไข: ฉันเป็นคนโง่เขลาและไม่ได้อ่านคำขอของคุณเลย

วิธีบรรลุสิ่งที่คล้ายกันจากman git-config:

 apply.whitespace
       Tells git apply how to handle whitespaces, in the same way
       as the --whitespace option. See git-apply(1).

ดังนั้นเปิด~/.gitconfigหรือ./.git/config/และต่อท้าย

[apply]
   whitespace = nowarn

นอกจากนี้ยังอาจไม่อนุญาตให้คุณกระทำบางสิ่งที่เปลี่ยนเฉพาะช่องว่าง แต่ฉันแน่ใจว่าคุณสามารถลบล้างสิ่งนั้นได้ด้วยแฟล็กบางส่วน


1
OP กำลังมองหาวิธีตั้งค่าเริ่มต้นเมื่อทำไฟล์git diff. applyนี้ไม่ได้สำหรับ
denishaskin

10

คำถามเก่า (2011) แต่ตอนนี้มีทางลัดgit diff -wที่ย่อมาจาก --ignore-all-space

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


2

จะดีมากถ้าเป็นไปได้ด้วยตัวเลือก แต่นามแฝงทำงานได้ดีพอสมควร นี่คือบรรทัดที่เกี่ยวข้องจาก. gitconfig ของฉัน:

[diff]
    tool = mydiff
[difftool "mydiff"]
    cmd = "colordiff -NuBbwi \"$LOCAL\" \"$REMOTE\" | less -R"
[difftool]
    prompt = false
[alias]
    dt = difftool

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

  1. เส้น --- ใน colordiff มีสีแตกต่างจากเส้นเดียวกันใน git diff (ปัญหาเล็กน้อยมาก)
  2. แต่ละไฟล์จะแสดงทีละไฟล์ (ปัญหาที่น่ารำคาญ - ใครรู้วิธีแก้ไข?)

นี่คือ / etc / colordiffrc ของฉัน:

plain=off
newtext=green
oldtext=red
diffstuff=cyan
cvsstuff=red

Mac OS X 10.9.2, git เวอร์ชัน 1.8.5.2 (Apple Git-48)

(colordiff ได้จากการชง)

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