git diff --name-status를 사용하여 상태에 따라 파일 이름 색상화

git diff --name-status를 사용하여 상태에 따라 파일 이름 색상화

나는 종종 git diff --name-status BRANCH_NAME수정된 파일 목록을 얻기 위해 이것을 사용합니다. 이 명령의 출력을 git status추가된 파일의 경우 녹색, 수정의 경우 파란색, 삭제의 경우 빨간색 등과 같이 색상화할 수 있습니까?

중복이 아니예요Git 출력에 색상을 지정하는 방법은 무엇입니까?출력의 다른 부분을 색상화하고 싶고 구성 파일의 제안된 변경 사항이 적용되지 않기 때문입니다.

답변1

나는 이것을 수행하는 공식적인 방법을 모르지만 방금 이 기사를 썼고 그것은 나에게 효과적이었습니다.
다음 bash 스크립트를 다음 color_git_diff.sh 이름의 파일에 넣으세요: (또는 원하는 이름)

#!/usr/bin/env bash

for i in "$@"
do
    if  grep -q "^M" <<< "$i"
    then
        echo -e "\e[33m $i \e[0m"
    elif  grep -q "^D" <<< "$i"
    then
        echo -e "\e[31m $i \e[0m"
    fi
done

스크립트를 적용하려면 다음을 사용하여 호출할 수 있습니다.

git diff --name-status | xargs --delimiter="\n" ./color_git_diff.sh

분명히 매번 호출하고 싶지는 않으므로 이를 자신의 것에 넣고 bashrc함수나 별칭 또는 이와 유사한 것을 할당해야 합니다.
이것은 수정되거나 삭제된 파일에 대해서만 컬러 출력을 생성하며 수정된 파일을 노란색으로 설정했습니다. 머리 꼭대기에 있는 파란색에 대한 ansi 이스케이프 코드가 무엇인지 모르겠습니다. 아마도 그럴 것이라고 생각했습니다 \e[36m. 어쨌든, 사용하고 싶다면 직접 추가하면 됩니다 -

답변2

나는 이 작업을 수행하는 약간 더 새로운 방법을 제공하고 싶습니다. 주요 답변을 시도했을 때 출력 라인 사이에 거의 1초가 소요될 정도로 매우 느렸기 때문입니다. 이는 *nix 시스템이 아닌 Windows에서 git을 실행했기 때문일 수 있지만 "grep" 명령이 작동하는 데 오랜 시간이 걸립니다. 두 가지 모두에 대해 "--name-status" 매개변수의 출력을 고려하면 동일한 효과를 얻을 수 있습니다.자식 로그그리고자식 비교간단한 문자열이므로 "grep" 도구 대신 간단한 문자열 일치를 사용하면 출력이 거의 즉각적으로 이루어집니다.

for i in "$@"
do
    if  [[ ${i:0:1} == "M" ]] #grep -q "^M" <<< "$i"
    then echo -e "\e[34m $i \e[0m"
    elif [[ ${i:0:1} == "D" ]] #grep -q "^D" <<< "$i"
    then echo -e "\e[31m $i \e[0m"
    elif [[ ${i:0:1} == "A" ]] #grep -q "^A" <<< "$i"
    then echo -e "\e[32m $i \e[0m"
    else echo -e "$i"
    fi
done

또한 기본값과 함께 "추가된" 코드를 추가하여 추가 텍스트(예: git log --pretty)가 있으면 무시되지 않습니다.

Jaeden "Sifo Dyas" al'Raec Ruiner
PS - 동일한 xargs 명령과 구분 기호를 사용하지만 위 스크립트는 grep보다 빠르게 구문 분석합니다(Windows 상자에서).

답변3

동일한 작업을 수행하는 또 다른 방법이 있습니다. 모든 라인을 처리하기 위해 "sed" 명령을 사용합니다.

color_git_diff.sh:

#!/bin/bash

sed $'
s/^M/\033[33mM/
s/^A/\033[32mA/
s/^D/\033[31mD/
s/$/\033[0m/'

다음과 같이 사용할 수 있습니다.

git diff --name-status | ./color_git_diff.sh

답변4

다음 명령을 시도해보세요:

vimdiff [file1] [file2]

관련 정보