Git 호출기가 줄어들었지만 출력이 색상화되는 원인은 무엇입니까?

Git 호출기가 줄어들었지만 출력이 색상화되는 원인은 무엇입니까?

less이에 따르면 구문 강조 자체를 수행할 수 없습니다.이 스레드.

그러나 git diffless의 기본 호출기에서는 컬러 출력을 멋지게 표시합니다. 출력을 파일로 리디렉션하면 git diff색상 이스케이프 시퀀스가 ​​표시되지 않습니다.

git diff전송되는 위치를 알고 이에 따라 출력 형식을 지정할 수 있습니까 ? 무엇을 할 것인가?


방금 git이 출력에 색상을 지정하는 것을 확인했지만 diff(예 git diff: ) 일반적으로 구문 강조를 수행하는 방법을 모릅니다. 예를 들어

git show 415fec6:log.tex

TeX와 유사한 구문을 활성화하지 않습니다.


소스를 읽으면서 git다음 팁을 찾았습니다.

존재하다 diff.h:

int use_color;

아까도 언급했는데구문 강조, 그러나 이것은 잘못된 것입니다. 출력 색상을 의미합니다.

컬러 출력 예

답변1

Git은 isatty()stdout이 tty인지 확인하는 데 사용됩니다. 이는 호출기를 사용해야 하는지 확인하는 데 사용됩니다(호출기.c) 및 색상(color.c).

답변2

달리기:

git diff --color=always > output

색상 이탈을 표시합니다.

젠장, 파일에서 찾았어요 git:color.c

static int check_auto_color(void)                                           
{                                                                           
  if (color_stdout_is_tty < 0)                                              
    color_stdout_is_tty = isatty(1);                                        
  if (color_stdout_is_tty || (pager_in_use() && pager_use_color)) {         
    char *term = getenv("TERM");                                            
    if (term && strcmp(term, "dumb"))                                       
      return 1;                                                             
  }                                                                         
  return 0;                                                                 
}  

답변3

less색상을 지원할 수 -r --raw-control-chars있으며-R --RAW-CONTROL-CHARS

파이썬을 사용할 수 있습니다pygmentize하이라이트를 만들고 입력하세요.

모두 결합하려면 less 필터를 구성하세요.슈퍼유저가 언급했듯이

관련 정보