Làm cách nào để ghi git diff vào stdout?


93

Theo mặc định git diffin tất cả các +-dòng vào stdout tuy nhiên tôi có một máy (devian) (tôi kết nối qua ssh) git diffdẫn tôi đến một trình chỉnh sửa (mà tôi không biết đó là cái nào) và tôi cần phải nhấn qđể tiếp tục.

Tôi đã kiểm tra cấu hình git và có vẻ như:

$ git config --list
user.name=XXX
user.email=XXX@XXX
color.ui=false
difftool.prompt=false
mergetool.prompt=false
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=XXX
branch.master.remote=origin
branch.master.merge=refs/heads/master
$ git config --global --list
user.name=XXX
user.email=XXX@XXX
color.ui=false
difftool.prompt=false
mergetool.prompt=false
$ git config --system --list
'/etc/gitconfig': No such file or directory

Có nơi nào tôi đang thiếu không? Có thể công cụ không xác định là dự phòng hoặc cái gì đó do tôi máy của tôi bị thiếu thứ gì đó? Bất kỳ trợ giúp được đánh giá cao. Cảm ơn.


Câu trả lời:


166

Theo mặc định, Git gửi đầu ra khác biệt của nó (và nói chung là bất kỳ đầu ra nào có thể nhiều hơn một màn hình) đến máy nhắn tin của hệ thống , đây là một tiện ích chỉ in một màn hình đầu ra tại một thời điểm. Nếu bạn muốn tắt máy nhắn tin khi bạn chạy một lệnh, hãy chuyển --no-pagerđến Git:

$ git --no-pager <subcommand> <options>

Điều này có thể được chạy cho bất kỳ lệnh Git nào.

Nếu bạn muốn tắt nó theo mặc định chỉ cho khác biệt , bạn có thể đặt máy nhắn tin khác biệt thành catbằng cách chạy:

$ git config pager.diff false

Nếu bạn muốn tắt nó theo mặc định cho tất cả các lệnh , bạn có thể đặt máy nhắn tin Git thành catbằng cách chạy:

$ git config --global core.pager cat

Không biết về máy nhắn tin. git config --global core.pager catđã làm nó!. Cảm ơn bạn :)
nacho4d

4
@aaronbauman: Bạn đã chuyển nó cho git( không phải lệnh phụ) chưa?
mipadi

Tôi thấy, "git --no-pager diff" khác với "git diff --no-pager". Cảm ơn bạn đã làm rõ
aaronbauman

1
Cùng một điều làm việc cho git branch, ví dụ nhưgit config pager.branch false
dinjas

30

core.pagerGiá trị sau sử dụng less, được in ra stdout và cũng có chức năng máy nhắn tin (nếu cần), cho phép cuộn lên và xuống (không giống như cat):

$ git config --global core.pager "less -FRSX"

Nó ngay lập tức thoát nếu khác biệt vừa với màn hình đầu tiên ( -F), xuất ra các ký tự điều khiển thô ( -R), cắt các dòng dài thay vì quấn ( -S) và không sử dụng chuỗi termcap init / deinit ( -X).


1
Cảm ơn bạn .. Tôi đã tìm kiếm tùy chọn này trên khắp internet :)
obai

Đây là thứ tôi muốn
user3595632

20

Bạn cũng có thể đơn giản sử dụng catcho bất kỳ gitlệnh nào nếu bạn không quan tâm đến màu sắc.

Vì vậy, git diff | catđối với trường hợp của bạn.

Chỉnh sửa: như đã chỉ ra trong các nhận xét nếu bạn quan tâm đến việc sử dụng màu sắc:

git diff --color | cat


9
Và nếu bạn quan tâm đến màu sắc, hãy làm git diff --color | cat(:
xjcl.
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.