การผสานโดยไม่มีข้อขัดแย้งของช่องว่าง


179

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

นอกจากนี้ยังมีคำขอดึงประมาณ 50 ครั้งสำหรับโครงการนี้ซึ่งทั้งหมดจะมีข้อขัดแย้งเมื่อความมุ่งมั่นของฉันถูกรวมเข้าด้วยกัน มีวิธีใดบ้างที่สามารถตั้งค่าคอมไพล์ได้ดังนั้นเมื่อรวมอนาคตเข้าด้วยกันจะไม่สนใจความขัดแย้งที่หนึ่งในนั้นเป็นเพียงการเปลี่ยนช่องว่างหรือไม่

การแก้ไขคอมไพล์เองหรือใช้เครื่องมือของบุคคลที่สามเป็นไปไม่ได้ แต่การใช้เบ็ดนั้นใช้ได้


สำเนาซ้ำซ้อนที่เป็นไปได้ของช่องว่าง git
Cees Timmerman

คำตอบ:


246
 git merge -Xignore-all-space

หรือ (แม่นยำยิ่งขึ้น)

 git merge -Xignore-space-change

ควรจะเพียงพอที่จะเพิกเฉยต่อความขัดแย้งที่เกี่ยวข้องกับพื้นที่ทั้งหมดในระหว่างการรวม

ดูคอมไพล์ git :

--ignore-space-change

ดูรายละเอียดการเปลี่ยนแปลงในพื้นที่ว่าง
สิ่งนี้จะข้ามช่องว่างที่ท้ายบรรทัดและพิจารณาลำดับอื่นทั้งหมดของอักขระช่องว่างอย่างน้อยหนึ่งตัวให้เท่ากัน

--ignore-all-space

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

ks1322 เพิ่มในความคิดเห็นคำแนะนำที่ดี:

มันคุ้มค่าที่จะควบรวมกับและตรวจทานการผสานก่อนที่จะเกิดขึ้นจริงกระทำ--no-commit


OP Callum Macraeรายงานว่าในกรณีที่การผสานดำเนินการอย่างต่อเนื่องและเว้นวรรคต่อท้ายที่มีอยู่ในแพทช์คำขอดึงจะนำไปใช้ไฟล์ท้องถิ่น
อย่างไรก็ตาม OP ใช้เบ็ดก่อนการส่งมอบซึ่งดูแลช่องว่างต่อท้ายดังกล่าว
(ผมคิดว่าบิตคล้ายกับคนนี้ยังอ้างถึงที่นี่ )


เบ็ดอ้างอิงล่วงหน้าของ OP อ้างอิงที่นี่ :

นอกเหนือจากการลบช่องว่างต่อท้ายจะลบช่องว่างหนึ่งถึงสามช่องว่างก่อนแท็บ (ฉันได้ตั้งค่าความกว้างของแท็บไว้ที่ 4) และเพิ่ม EOL
ฉันมีรายงานว่ารหัสที่เพิ่ม EOL ลบไฟล์ใน windows แต่ไม่สามารถทำซ้ำได้


1
จากการทดสอบของฉันจนถึงขณะนี้ดูเหมือนว่าจะลบการเปลี่ยนแปลงช่องว่างทั้งหมดในไฟล์ อย่างไรก็ตามตอนนี้ฉันกำลังใช้ hook ก่อนส่งเพื่อลบ whitespace tail tail ดังนั้นจึงไม่ใช่ปัญหา
callumacrae

1
@CallumMacrae: ตกลงและขอบคุณสำหรับความคิดเห็น อีกครั้งฉันได้เพิ่มลิงค์ของคุณในคำตอบสำหรับการมองเห็นมากขึ้น
VonC

1
git merge -Xignore-space-change- ดีฉันสามารถพูดได้อย่างนี้ไม่ได้ทำงาน ... ช่องว่างชิ้นเดียวที่ฉันพยายามลบยังคงอยู่ Git แย่มาก
jww

1
ควรรวม--no-commitและตรวจสอบการรวมก่อนที่จะส่งมอบจริง
ks1322

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