ไม่สนใจช่องว่างการเปลี่ยนแปลงในคำสั่ง git ทั้งหมด


26

ฉันพบไซต์มากมายที่อธิบายวิธีการคอมไพล์เตือนคุณเมื่อคุณเปลี่ยนจุดสิ้นสุดบรรทัดหรือเทคนิคอื่น ๆ เพื่อป้องกันไม่ให้คุณทำไฟล์ทั้งหมดยุ่งเหยิง สมมติว่ามันสายไปแล้ว - ทรีได้ยอมรับว่าสลับปลายสายของไฟล์ดังนั้นgit diffแสดงการลบไฟล์เก่าแล้วตามด้วยการเพิ่มไฟล์ใหม่ที่มีเนื้อหาเดียวกัน

ฉันกำลังมองหาตัวเลือกการกำหนดค่า git หรือการตั้งค่าสถานะบรรทัดคำสั่งที่บอกว่าdiffไม่สนใจสิ่งเหล่านั้น - ถ้าสองบรรทัดแตกต่างกันโดยช่องว่างเท่านั้นให้ทำท่าว่ามันเหมือนกัน ฉันต้องการตัวเลือกการตั้งค่า / การตั้งค่าสถานะนี้เพื่อทำงานกับทุกอย่างที่ขึ้นอยู่กับความแตกต่างของไฟล์ - diff,, / blameแม้merge/ ในrebaseอุดมคติ - ฉันต้องการgitละเว้นช่องว่างต่อท้ายอย่างสมบูรณ์โดยเฉพาะอย่างยิ่งการสิ้นสุดบรรทัด ฉันจะทำสิ่งนั้นได้อย่างไร

คำตอบ:


14

สำหรับความแตกต่างมีgit diff --ignore-space-at-eolซึ่งควรจะดีพอ สำหรับ diff และตำหนิคุณสามารถละเว้นการเปลี่ยนแปลงทั้งหมดที่มีช่องว่าง-w: ,git diff -wgit blame -w

สำหรับการgit applyและเอกสารที่กล่าวถึงgit rebase--ignore-whitespace

สำหรับการผสานดูเหมือนว่าคุณจำเป็นต้องใช้เครื่องมือการผสานภายนอก คุณสามารถใช้สคริปต์เสื้อคลุมนี้ (ยังไม่ทดลอง) ที่favorite-mergetoolเป็นที่ชื่นชอบของคุณผสานเครื่องมือ ; git -c mergetool.nocr.cmd=/path/to/wrapper/script mergeวิ่ง ผลลัพธ์ของการผสานจะอยู่ในรูปแบบ unix หากคุณต้องการรูปแบบอื่นให้แปลงทุกอย่างเป็นรูปแบบอื่นหรือแปลง$MERGEDหลังจากผสาน

#!/bin/sh
set -e
TEMP=$(mktemp)
tr -d '\013' <"$BASE" >"$TEMP"
mv -f "$TEMP" "$BASE"
TEMP=$(mktemp)
tr -d '\013' <"$LOCAL" >"$TEMP"
mv -f "$TEMP" "$LOCAL"
TEMP=$(mktemp)
tr -d '\013' <"$REMOTE" >"$TEMP"
mv -f "$TEMP" "$REMOTE"
favorite-mergetool "$@"

เพื่อลดปัญหาการสิ้นสุดของบรรทัดแบบผสมตรวจสอบให้แน่ใจว่ามีการประกาศไฟล์ข้อความเช่นนั้น

ดูเพิ่มเติมเป็นไปได้ไหมที่คอมไพล์จะเพิกเฉยต่อความแตกต่างของการสิ้นสุดบรรทัด? บน Stack Overflow


มีการกำหนดค่าใด ๆ ที่จะใช้แฟล็ก -w กับตำหนิ git หรือไม่
Thayne

@Thayne ไม่ใช่ที่ฉันรู้ คุณสามารถกำหนดนามแฝงเช่นbl = blame -wแต่คุณไม่สามารถกำหนดชื่อคำสั่งในตัวใหม่และฉันไม่เห็นตัวเลือกการกำหนดค่าเพื่อให้เป็นค่าเริ่มต้น แต่ฉันไม่ใช่ผู้เชี่ยวชาญคอมไพล์
Gilles 'ดังนั้น - หยุดความชั่วร้าย'

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