เอาท์พุท Git diff ไปยังไฟล์เก็บสี


123

เป็นไปได้ไหมที่จะทำgit diffและบันทึกผลลัพธ์ลงในไฟล์ด้วยการระบายสี?

ฉันรู้วิธีทำgit diff > filename.rtf- ซึ่งบันทึกเป็นไฟล์ แต่ฉันต้องการคงสีไว้


2
คุณสามารถแปลงเป็น html ด้วยสี: stackoverflow.com/questions/2013091/coloured-diff-to-html
Gabe Moothart

5
Notepad ++ จะเน้นไฟล์ถ้าคุณบันทึกด้วยนามสกุล. diff
พระคุณเจ้า

คำตอบ:


147

ลอง:

git diff --color > foo.txt

จากนั้นปัญหาในภายหลัง:

cat foo.txt

หรือ:

less -R foo.txt

2
@RoR "คำพูดพล่อยๆ" ของบุคคลหนึ่งคือรหัสสีของบุคคลอื่น (เช่นกันขั้ว) ;-) ฉันลองแล้วมันใช้งานได้; สีจะถูกเก็บรักษาไว้หากฉันcatไฟล์จากบรรทัดคำสั่ง (คุณคาดหวังว่าสีจะถูกรักษาไว้อย่างไร)
mpontillo

1
นั่นคือสิ่งที่มันทำ เพิ่มรหัสสี bash หากคุณ cat ไฟล์ในคอนโซลจะแสดงสีต่างๆ
ralphtheninja

1
@RoR คุณต้องใส่บางอย่างไว้ตรงกลางเพื่อแปลงรหัสสี bash เป็นรูปแบบ rtf
ralphtheninja

3
Notepad ++ สามารถเน้นไฟล์ diff (* ส่วนขยาย. diff ถูกไฮไลต์โดยอัตโนมัติมิฉะนั้นจะเปลี่ยนแปลงLanguage --> D --> Diff) หากคุณไม่ชอบสีเริ่มต้นให้เปลี่ยนเป็นสีSettings --> Style Configurator --> Diff. ในการคัดลอกวางด้วยสีคุณสามารถใช้ปลั๊กอิน (เช่นNppExport) ที่อนุญาตให้ส่งออก / คัดลอกไปยัง RTF หรือ HTML
Nikita G.

3
git diff AB> foo.diff (บรรณาธิการหลายคนจะเปิดไฟล์ด้วยสีเนื่องจากไฟล์เป็นไฟล์. diff)
zeusstl

34

บันทึกไฟล์ด้วยนามสกุล. diff และเปิดใน Notepad ++ หรือ Vim หรือ SublimeText

git diff > 20150203_someChanges.diff

ขอบคุณ @Monsingor


ฉันคิดว่าคุณลืม '>' ตรงกลางสิ่งนี้ใช้ไม่ได้
GoGoris

20

เปิดแฟ้ม diff ผลลัพธ์ในSublime Text 2 แสดงสีที่แตกต่างกัน


1
คุณอาจต้องเปลี่ยนไวยากรณ์เป็น diff เพื่อเปิดใช้งานการไฮไลต์ที่เหมาะสมในกรณีที่ไฟล์ diff มีนามสกุลแตกต่างจาก * .diff (ผ่าน View -> Syntax -> Diff)
Nikita G.

มันไม่ได้เน้นdiff.txtสำหรับฉันแม้จะตรวจพบ "ความแตกต่าง" ที่มุมล่างขวา
Nakilon

11

เพื่อขยายคำตอบของ @ Gabe

คุณสามารถไพพ์เอาต์พุตไปยังสคริปต์ bash ตัวแปลง ansi เป็น html และกำหนดเอาต์พุตนั้นไปยังไฟล์ html:

git diff --color|./ansi2html.sh > changes.html

แน่นอนว่าสามารถดู html ได้โดยเบราว์เซอร์ใด ๆ ดังนั้นจึงสามารถอ่านเอาต์พุตได้ใน Windows เป็นต้น

โค้ด ansi2html อยู่ที่นี่: http://www.pixelbeat.org/scripts/ansi2html.sh


ไม่ทำงานฉันเข้าใจ: gawk: cmd. บรรทัด: 25: (FILENAME = - FNR = 1) ร้ายแรง: พยายามใช้อาร์เรย์ `a (from span) 'ในบริบทสเกลาร์
Tim

2
รับ Homebrew brew install gawkและเรียกใช้ brew install gnu-sedนอกจากนี้คุณยังจะต้อง
Geoffrey Booth

สิ่งที่ฉันต้องการสุดยอด!
Keith

ห้องสมุด ansi2html หลามมันสำหรับฉันgithub.com/ralphbean/ansi2html pip ติดตั้งได้และทำงานเหมือนกับ bash script ในคำตอบนี้ อย่าลืมแทนที่ "./ansi2html.sh" ด้วย "ansi2html"
Nagasaki45


3

ผมพบคำตอบที่นี่: เอาท์พุทสีของคำสั่งคอมไพล์ที่เฉพาะเจาะจง

คุณสามารถส่งผ่าน-c color.ui=alwaysไปยังgitคำสั่งใดก็ได้และมันจะยังคงระบายสีในการเปลี่ยนเส้นทาง ตัวอย่างเช่น:git -c color.ui=always status > file


2
git remote add -f b path/to/repo_b.git
git remote update
git diff master remotes/b/master > foo.txt

ความแตกต่างที่แยกในไฟล์ '* .txt' สามารถอ่านได้อย่างง่ายดายโดย SublimeText2 โดยไม่จำเป็นต้องตั้งค่า (ผ่าน View -> Syntax -> Diff)


git remote rm remotes/b/masterเพื่อรีเซ็ตสาขากลับสู่สถานะเดิม
Abhijeet

1

เพื่อให้ข้อความเทอร์มินัลที่เป็นสี ... git diff หรืออื่น ๆ ... สามารถดูได้จากเบราว์เซอร์

sudo apt-get install aha  #  https://github.com/theZiz/aha

ติดตั้งahaโดยใช้ด้านบนจากนั้นออก

git diff --color mysourcefile  | aha > ~/cool_colorized.html

firefox  ~/cool_colorized.html

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