이번 포스팅에서는 delta 사용법에 대해서 정리하고자 한다. git의 기본 diff는 추가된 줄에 초록, 삭제된 줄에 빨강을 칠하는 게 전부라, 코드가 길어지면 어디가 어떻게 바뀌었는지 눈으로 따라가기 힘들다. delta는 이 diff에 구문 강조(syntax highlighting)를 입히고, 한 줄 안에서 실제로 바뀐 부분만 단어 단위로 짚어 주며, 좌우 비교(side-by-side)와 줄 번호까지 붙여 주는 페이저다. Rust로 작성돼 빠르고, .gitconfig에 몇 줄 추가하면 git diff·git show·git blame이 전부 이 화면으로 바뀐다. 이 글에서는 설치와 git 연동부터 side-by-side, 줄 번호, 파일 간 이동, 테마 설정, 그리고 실제로 돌려 본 결과까지 실무 순서대로 짚는다.
밋밋한 git diff가 답답했다면
delta는 git의 diff 출력을 구문 강조와 단어 단위 하이라이트로 다시 그려 주는 syntax 페이저다. “A syntax-highlighting pager for git, diff, grep, and blame output”이라는 한 줄 소개 그대로, git이 내보내는 diff를 가로채 훨씬 읽기 좋은 형태로 렌더링한다. 2026년 8월 기준 GitHub 스타 31.7k를 넘긴 Rust 구현으로, 한 번 설정해 두면 모든 git 명령의 diff에 자동으로 적용된다.
기본 git diff의 한계는 색이 두 가지뿐이라는 점이다. 초록(추가)과 빨강(삭제)만으로는 코드의 구조가 드러나지 않고, 한 줄에서 단어 하나만 바뀌어도 그 줄 전체가 삭제-추가 쌍으로 표시돼 정작 무엇이 달라졌는지 찾아야 한다. delta는 이 두 문제를 정면으로 푼다. 코드에 언어별 구문 강조를 입혀 함수·문자열·키워드가 색으로 구분되고, Levenshtein 알고리즘으로 한 줄 안에서 실제로 바뀐 글자만 강조해, “이 줄의 이 부분이 바뀌었다”가 한눈에 보인다.

이 도구는 git을 매일 쓰는 개발 환경의 기본기를 끌어올린다. 커밋을 자주 쪼개고 합치는 Jujutsu나 여러 브랜치를 병렬로 다루는 Git worktree 워크플로에서, diff를 빠르고 정확하게 읽는 능력은 그 자체로 생산성이다. delta는 그 “읽기”를 담당한다. 이 글의 설정은 zsh·bash 어디서든 동일하게 적용되며, git만 설치돼 있으면 된다.
설치와 git 연동: 패키지 이름에 주의
delta는 패키지 매니저로 설치하고 .gitconfig에 페이저로 등록하면 바로 쓸 수 있다. 여기서 흔히 걸리는 함정이 하나 있는데, 설치할 패키지 이름은 git-delta이지만 실행 파일 이름은 delta라는 것이다. brew install delta를 치면 엉뚱한 다른 도구가 깔리므로 반드시 git-delta로 설치한다.
# macOS / Linux (Homebrew) — 패키지 이름은 git-delta
brew install git-delta
# 모든 플랫폼 (Rust cargo)
cargo install git-deltaShellScript설치 후 실행 파일이 delta로 잡히는지 delta --version으로 확인한다. 이제 git이 diff를 출력할 때 delta를 거치도록 .gitconfig에 등록한다.
# ~/.gitconfig
[core]
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true # n/N 키로 파일 간 이동
dark = true # 어두운 터미널 배경 기준 (밝으면 light = true)Plaintextcore.pager = delta는 git diff·git show·git log -p 같은 명령의 출력을 delta로 보내는 핵심 설정이다. interactive.diffFilter는 git add -p처럼 대화형으로 diff를 볼 때도 delta 색을 입혀 준다. [delta] 섹션 아래에는 delta 고유 옵션을 둔다. dark = true는 배경이 어두운 터미널에 맞춰 색을 조정하고, 밝은 테마를 쓰면 light = true로 바꾼다. 명령줄로 설정하려면 git config --global core.pager delta처럼 하나씩 넣어도 된다.
설정만 하면 git diff가 바로 바뀐다

delta를 페이저로 등록하고 나면 별도 명령 없이 기존 git 명령이 그대로 delta 화면으로 나온다. git diff를 치면 변경된 코드에 구문 강조가 입혀지고, 파일 경로가 헤더로 정리되며, 한 줄 안에서 바뀐 부분이 단어 단위로 강조된다. 새 명령을 외울 필요 없이 평소 쓰던 git 명령이 더 읽기 좋아진다.
# 설정 후에는 평소 명령 그대로 — 출력만 delta로 바뀐다
git diff
git show HEAD
git log -p
git diff main..featureShellScript위 명령들은 모두 delta를 거쳐 출력된다. git diff는 작업 중인 변경을, git show는 특정 커밋의 변경을, git log -p는 커밋별 변경 이력을 각각 구문 강조된 형태로 보여준다. 별도의 delta 명령을 치는 게 아니라, git이 diff를 낼 때 delta가 중간에서 렌더링을 가로채는 구조다. 그래서 기존 워크플로를 하나도 바꾸지 않고 화면만 개선된다.
delta가 켜졌는지 확인하려면 아무 변경이나 만든 뒤 git diff를 쳐 보면 된다. 파일 이름이 박스 형태 헤더로 나오고 코드에 색이 입혀졌다면 정상 동작하는 것이다. 만약 예전 그대로라면 .gitconfig의 core.pager 설정이 반영됐는지 다시 확인한다.
좌우로 비교하기: side-by-side와 줄 번호
한 화면에서 변경 전과 후를 나란히 보고 싶다면 side-by-side 모드를 켠다. [delta] 섹션에 side-by-side = true를 넣으면 diff가 좌(이전)·우(이후) 두 칸으로 나뉘어, 어느 부분이 어떻게 달라졌는지 대조하기 쉬워진다. 줄 번호(line-numbers)를 함께 켜면 원본과 변경본의 행 번호가 양쪽에 표시된다.
# ~/.gitconfig 의 [delta] 섹션
[delta]
navigate = true
side-by-side = true # 좌우 두 칸 비교
line-numbers = true # 양쪽 줄 번호 표시
wrap-max-lines = 2 # 긴 줄 줄바꿈 허용Plaintextside-by-side = true는 넓은 터미널에서 특히 유용하다. 왼쪽에 이전 코드, 오른쪽에 바뀐 코드가 행을 맞춰 표시되므로, 위아래로 삭제-추가가 섞여 나오는 기본 diff보다 변경의 맥락을 파악하기 쉽다. line-numbers = true는 각 행의 원본·변경 번호를 함께 보여줘, 리뷰 중 “몇 번째 줄”을 짚을 때 편하다. 다만 side-by-side는 화면이 좁으면 답답할 수 있어, 터미널 폭에 따라 켜고 끄는 걸 권한다.
파일 사이를 오가는 navigate
변경 파일이 여러 개인 diff에서는 navigate 기능으로 파일 사이를 건너뛴다. .gitconfig에 navigate = true를 두면, delta 화면에서 n 키로 다음 파일(또는 다음 변경 덩어리)로, N 키로 이전으로 이동한다. 긴 diff를 한 줄씩 스크롤하지 않고 변경 지점만 빠르게 훑을 수 있다.
# navigate = true 설정 후, delta 화면 안에서
# n → 다음 변경 파일/덩어리로 점프
# N → 이전으로
git diff # 여러 파일이 바뀐 diff에서 n/N 로 이동ShellScriptnavigate는 diff가 길 때 진가를 발휘한다. 수십 개 파일이 바뀐 diff를 위에서부터 스크롤하는 대신, n을 눌러 각 파일의 시작으로 바로 점프하며 훑는다. 이 기능은 delta가 내부적으로 페이저에 검색 패턴을 설정해 구현하므로, 페이저(보통 less)의 검색 이동 키를 그대로 재활용하는 방식이다. 코드 리뷰나 큰 머지를 확인할 때 스크롤 피로를 크게 줄여 준다.
테마와 색 고르기
delta의 구문 강조 색은 테마로 바꾼다. syntax-theme 옵션에 테마 이름을 지정하면 코드 색이 통째로 달라지는데, delta는 bat과 같은 테마 엔진을 써서 두 도구의 테마가 호환된다. 그래서 bat에서 쓰던 테마를 delta에도 그대로 적용할 수 있다.
# ~/.gitconfig 의 [delta] 섹션
[delta]
dark = true
syntax-theme = Dracula # 코드 구문 강조 테마
line-numbers = truePlaintext# 사용 가능한 테마 목록 보기 (bat 테마와 공유)
delta --list-syntax-themesShellScriptsyntax-theme = Dracula처럼 이름을 지정하면 코드 부분의 색이 그 테마를 따른다. delta --list-syntax-themes로 쓸 수 있는 테마 목록을 확인할 수 있는데, Dracula·Nord·Monokai 같은 익숙한 이름이 대부분 있다. delta의 전체 색을 미리 보고 싶다면 delta --show-config로 현재 적용된 설정을 확인하거나, 문서의 테마 갤러리에서 비교해 고르면 된다. 배경 밝기에 맞춰 dark/light만 제대로 맞춰도 가독성이 크게 올라간다.
features로 설정 묶어 상황별로 바꾸기
설정이 늘어나면 features로 묶어 관리한다. delta의 features는 여러 옵션을 이름 붙은 묶음으로 만들어, 그 이름 하나로 한꺼번에 켜는 기능이다. 평소 쓰는 기본 묶음과 리뷰용 묶음을 따로 정의해 두고, 상황에 따라 명령 단위로 갈아 끼울 수 있다.
# ~/.gitconfig — 기본으로 적용할 feature 지정
[delta]
features = my-default
# 이름 붙은 설정 묶음들
[delta "my-default"]
side-by-side = true
line-numbers = true
syntax-theme = Dracula
[delta "review"]
side-by-side = true
hyperlinks = true # 파일 경로를 클릭 가능한 링크로Plaintext# 이 명령에서만 review 묶음으로 보기
git -c delta.features=review diff
# 환경변수로 일시 지정
DELTA_FEATURES=review git diffShellScript[delta] features = my-default는 my-default 묶음에 정의한 옵션들을 기본으로 적용한다. 그리고 리뷰처럼 다른 구성이 필요할 때는 git -c delta.features=review diff로 그 명령에만 review 묶음을 씌운다. hyperlinks = true를 켜면 diff 안의 파일 경로가 클릭 가능한 링크가 돼, 지원하는 터미널에서는 경로를 눌러 에디터로 바로 열 수 있다. 설정이 복잡해질수록 이렇게 묶어 두면 관리가 훨씬 수월해진다.
diff만이 아니다: blame과 merge, grep
delta는 git diff뿐 아니라 git blame, 머지 충돌, grep 출력까지 손본다. blame은 각 줄의 커밋 정보를 색으로 구분해 누가 언제 바꿨는지 읽기 쉽게 만들고, 머지 충돌은 양쪽 변경을 구조적으로 정리해 보여준다. grep이나 ripgrep의 검색 결과에도 구문 강조를 입힌다.
# blame 출력도 delta가 정리해 준다
git blame src/main.rs
# grep 결과에 구문 강조 (delta가 페이저로 동작)
git grep "TODO"ShellScriptgit blame을 delta로 보면 커밋 해시·작성자·날짜가 정돈되고 코드에 구문 강조가 입혀져, 한 파일의 변경 내력을 훨씬 편하게 훑는다. 머지 충돌 상황에서도 <<<<<<<·======= 마커만 나열되는 기본 화면보다 양쪽 변경이 명확히 구분돼 해결이 쉬워진다. 즉 delta는 “diff를 보는 모든 순간”에 개입해 화면을 정리하는 도구라, git을 쓰는 시간 전반의 가독성을 끌어올린다.
직접 돌려본 결과: 실제 git diff를 delta로
delta를 실제로 설치·설정하고 git diff를 찍어봤다. 작은 저장소에서 greet.js의 인사말을 Hi에서 Hello로 바꾸고, 함수 하나에 줄을 추가한 뒤 git diff를 실행한 결과가 아래 캡처다. .gitconfig에는 core.pager = delta, [delta] line-numbers = true, syntax-theme = Dracula만 설정했다.
# 설정 후, 평소처럼 diff를 찍기만 하면 된다
git diffShellScript
캡처에서 delta의 핵심이 그대로 드러난다. 첫째, 코드에 구문 강조가 입혀져 function·문자열·인자가 색으로 구분된다. 둘째, 왼쪽·오른쪽에 원본과 변경본의 줄 번호가 함께 표시돼 몇 번째 줄이 바뀌었는지 바로 짚힌다. 셋째, 가장 눈에 띄는 건 단어 단위 하이라이트다. return "Hi, "가 return "Hello, "로 바뀐 줄에서 delta는 줄 전체가 아니라 Hi(삭제)와 Hello(추가) 부분만 진하게 칠한다. 아래쪽 Bye가 Goodbye로 바뀐 줄도 마찬가지다. 기본 git diff였다면 이 줄들이 그냥 빨강·초록 두 줄로만 보여, 무엇이 달라졌는지 직접 대조해야 했을 것이다.
FAQ
brew install delta를 했는데 이상한 도구가 깔렸어요.
패키지 이름을 잘못 지정해서다. delta의 Homebrew 패키지 이름은 delta가 아니라 git-delta다. brew install delta는 이름이 같은 다른 프로그램을 설치하므로, 반드시 brew install git-delta로 설치해야 한다. 설치 후 실행 파일 이름은 delta이므로 delta --version으로 제대로 깔렸는지 확인한다.
설정했는데 git diff가 예전 그대로예요.
.gitconfig의 [core] pager = delta가 반영되지 않았을 가능성이 크다. git config --global core.pager를 쳐서 값이 delta로 나오는지 확인하고, 전역이 아닌 로컬 설정이 이를 덮어쓰고 있지 않은지도 본다. 그래도 안 되면 delta가 PATH에 있는지(which delta) 확인한다. delta 실행 파일을 git이 찾지 못하면 기본 페이저로 되돌아간다.
side-by-side가 화면에서 잘려 보여요.
터미널 폭이 좁아서다. side-by-side는 diff를 좌우 두 칸으로 나누므로 넓은 화면에서 유리하고, 좁은 창에서는 각 칸이 잘려 답답해진다. 좁은 화면에서는 side-by-side = false로 두거나, wrap-max-lines로 줄바꿈을 허용해 잘림을 완화한다. 화면 폭에 따라 이 옵션만 조절해도 체감이 크게 달라진다.
delta 테마를 bat과 맞추고 싶어요.
맞출 수 있다. delta는 bat과 같은 구문 강조 엔진(syntect)을 사용하므로 테마가 호환된다. git config --global delta.syntax-theme "테마이름"으로 지정하면 되고, delta --list-syntax-themes로 사용 가능한 목록을 확인한다. bat에서 쓰던 테마 이름을 그대로 넣으면 두 도구의 색이 통일된다.
git 명령마다 delta를 켜고 끌 수 있나요?
가능하다. 특정 명령에서만 delta를 끄려면 git --no-pager diff처럼 페이저를 비활성화하거나, 반대로 일시적으로 옵션을 주려면 git -c delta.side-by-side=true diff처럼 -c로 그 명령에만 설정을 덮어쓴다. 전역 설정은 .gitconfig에 두고, 상황에 따라 명령 단위로 조정하는 방식이 편하다.
마치며
지금까지 delta 사용법을 설치부터 blame·테마까지 정리해 보았다. 개인적으로 delta를 깐 뒤 가장 달라진 건 코드 리뷰의 속도였다. 예전에는 긴 diff에서 한 줄 안의 작은 수정을 찾느라 삭제-추가 두 줄을 눈으로 비교했는데, delta의 단어 단위 하이라이트가 그 부분을 바로 짚어 주니 “뭐가 바뀌었지”를 찾는 시간이 사라졌다. side-by-side를 켠 뒤로는 큰 리팩터링의 before/after도 한 화면에서 읽게 됐다.
도입은 부담이 없다. git-delta를 깔고 .gitconfig에 네다섯 줄 추가하면 끝이고, 마음에 안 들면 그 줄만 지우면 원래 git diff로 즉시 돌아간다. 코드를 다루는 사람이라면 diff를 보는 시간이 결코 적지 않은데, 그 시간의 가독성을 몇 줄 설정으로 올릴 수 있다면 안 할 이유가 없다. 매일 반복해 보는 화면을 개선하는 도구라, 체감 효과가 오래 쌓인다.
