Git diff đầu ra để giữ màu tập tin


122

Có thể làm git diffvà lưu đầu ra vào một tập tin với màu bằng cách nào đó?

Tôi biết cách thực hiện git diff > filename.rtf- việc lưu vào một tệp, nhưng tôi muốn giữ lại màu.


2
Bạn có thể chuyển đổi sang html với màu: stackoverflow.com/questions/2013091/coloured-diff-to-html
Gabe Moothart

5
Notepad ++ sẽ làm nổi bật tệp nếu bạn lưu nó với phần mở rộng .diff.
Đức ông

Câu trả lời:


145

Thử:

git diff --color > foo.txt

Sau đó, vấn đề sau:

cat foo.txt

Hoặc là:

less -R foo.txt

2
@RoR, mã "vô nghĩa" của một người là mã màu của người khác (tốt, của thiết bị đầu cuối). ;-) Tôi đã thử nó và nó hoạt động; màu được giữ nguyên nếu tôi cattập tin từ dòng lệnh. (Làm thế nào khác bạn sẽ mong đợi màu sắc được bảo tồn?)
mpontillo

1
Vâng, đó là những gì nó làm. Thêm mã màu bash. Nếu bạn cat tập tin trong giao diện điều khiển, nó sẽ hiển thị màu sắc.
ralphtheninja

1
@RoR Bạn sẽ phải đặt một cái gì đó ở giữa để chuyển đổi mã màu bash sang định dạng rtf.
ralphtheninja

3
Notepad ++ có thể làm nổi bật các tập tin khác nhau. (* tiện ích mở rộng .diff được tự động tô sáng, nếu không sẽ thay đổi Language --> D --> Diff.) Nếu bạn không thích màu mặc định, hãy thay đổi chúng trong Settings --> Style Configurator --> Diff. Để sao chép dán với màu sắc, bạn có thể sử dụng một plugin (ví dụ NppExport) cho phép xuất / sao chép vào RTF hoặc HTML.
Nikita G.

3
git diff AB> foo.diff (Nhiều người chỉnh sửa sẽ mở tệp bằng màu sắc vì tệp là tệp .diff)
zeusstl 18/03/2016

33

Lưu tệp với phần mở rộng .diff và mở nó trong Notepad ++ hoặc Vim hoặc SublimeText.

git diff > 20150203_someChanges.diff

Cảm ơn @Monsingor


Tôi nghĩ rằng bạn đã quên '>' ở giữa, điều này không hoạt động
GoGoris

20

Mở tệp diff đầu ra trong Sublime Text 2 . Nó cho thấy các màu khác nhau.


1
Bạn có thể cần thay đổi cú pháp thành diff để cho phép tô sáng thích hợp trong trường hợp tệp diff có phần mở rộng khác với * .diff. (thông qua Chế độ xem -> Cú pháp -> Khác biệt).
Nikita G.

Nó không nổi bật diff.txtđối với tôi, ngay cả khi tự động phát hiện "Diff" ở góc dưới bên phải.
Nakilon

10

Để mở rộng câu trả lời của @ Gabe.

Bạn có thể chuyển đầu ra sang tập lệnh bash chuyển đổi ansi sang html và chuyển đầu ra đó sang tệp html:

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

Tất nhiên html có thể được xem bởi bất kỳ trình duyệt nào để đầu ra có thể được đọc trong Windows, v.v.

Mã ansi2html có tại đây: http://www.pixelbeat.org/scripts/ansi2html.sh


Tôi không làm việc: gawk: cmd. dòng: 25: (FILENAME = - FNR = 1) fatal: cố gắng sử dụng mảng `a (từ span) 'trong ngữ cảnh vô hướng
Tim

2
Nhận Homebrew và chạy brew install gawk. Bạn cũng sẽ cần brew install gnu-sed.
Gian hàng Geoffrey

chính xác những gì tôi muốn, tuyệt vời!
Keith

Thư viện python ansi2html đã làm điều đó cho tôi github.com/ralphbean/ansi2html . Pip có thể cài đặt và hoạt động chính xác như tập lệnh bash trong câu trả lời này. Đừng quên thay thế "./ansi2html.sh" bằng "ansi2html".
Nagasaki45


3

Tôi tìm thấy một câu trả lời ở đây: Đầu ra màu của lệnh git cụ thể .

Bạn có thể chuyển -c color.ui=alwaysđến bất kỳ gitlệnh nào và nó sẽ tiếp tục tô màu khi chuyển hướng. Ví dụ: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

Sự khác biệt được trích xuất trong các tệp '* .txt' có thể dễ dàng đọc bằng SublimeText2 mà không cần phải đặt (thông qua Chế độ xem -> Cú pháp -> Khác).


git remote rm remotes/b/masterđể thiết lập lại chi nhánh trở lại trạng thái ban đầu.
Abhijeet

1

để cho phép mọi văn bản đầu cuối được tô màu ... git diff hoặc bất kỳ ... nào khác có thể xem được từ trình duyệt

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

cài đặt ahabằng cách sử dụng ở trên

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

firefox  ~/cool_colorized.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.