Zed 에디터의 Git 통합 기능 총정리
Git 작업을 할 때 에디터와 터미널을 왔다 갔다 하시나요?
코드를 수정하고 터미널로 전환해서 git diff를 확인하고 다시 에디터로 돌아오는 이 반복이 은근히 흐름을 끊죠.
Zed 에디터는 Git 기능을 에디터 안에 깊이 통합해서 이런 컨텍스트 전환을 최소화해 줍니다.
단순히 변경된 파일 목록을 보여주는 수준이 아닙니다. 스테이징, 커밋, 푸시, 브랜치 관리, 스태시, 머지 충돌 해결까지 거의 모든 Git 워크플로우가 에디터 안에서 돌아가요. 심지어 AI가 커밋 메시지를 대신 써주기까지 합니다.
이 글에서는 Zed의 Git 통합 기능을 하나씩 살펴보겠습니다.
Git 패널
Git 패널은 Zed에서 Git 작업의 시작점입니다.
하단 상태 바의 Git 아이콘을 클릭하거나 Cmd + Shift + G 단축키, 또는 커맨드 팔레트에서 git panel: toggle focus를 검색하면 열려요.
패널을 열면 현재 브랜치 이름, 변경된 파일 목록, 각 파일의 스테이징 상태가 한눈에 보입니다. 터미널에서 git add나 git restore를 실행하면 패널에도 바로 반영되고 반대로 패널에서 조작한 내용도 즉시 Git에 반영됩니다.
기본적으로 Git 패널은 왼쪽에 도킹되는데 설정에서 위치를 바꿀 수 있어요.
Zed의 설정 파일은 Cmd + ,로 열 수 있고 ~/.config/zed/settings.json 경로에 저장됩니다.
{
"git_panel": {
"dock": "right"
}
}
dock 값으로 "left", "right", "bottom" 중 하나를 지정하면 됩니다.
변경된 파일이 플랫 리스트로 표시되는 게 기본인데 폴더 계층 구조로 보고 싶다면 패널의 컨텍스트 메뉴에서 트리 뷰로 전환하면 돼요.
프로젝트 디프
git diff 명령어를 터미널에서 실행하면 텍스트 기반의 diff 출력을 보게 되는데요.
Zed의 프로젝트 디프는 이걸 훨씬 직관적으로 보여줍니다.
Git 패널 상단의 “Diff All” 버튼을 클릭하거나 Cmd + Shift + D 단축키로 열 수 있어요.
커맨드 팔레트에서 git: diff를 실행해도 됩니다.
프로젝트 디프의 핵심은 모든 변경 사항이 편집 가능한 멀티 버퍼라는 점입니다. diff를 보면서 바로 코드를 수정할 수 있으니까 “여기 고쳐야겠다”고 생각하는 순간 바로 손을 댈 수 있어요. 각 변경 블록(hunk) 단위로 스테이지하거나 언스테이지하고 파일 전체를 한번에 처리하는 것도 됩니다.
수정된 라인 안에서 정확히 어떤 단어가 바뀌었는지 하이라이트해주는 Word Diff 기능도 기본으로 켜져 있어요. 긴 줄에서 한두 글자만 바뀐 경우에 특히 유용한데 마크다운 같은 언어에서는 이게 오히려 산만하게 느껴질 수 있으니 언어별로 끌 수도 있습니다.
{
"languages": {
"Markdown": {
"word_diff_enabled": false
}
}
}
에디터에서 파일을 편집하다가 변경 사항을 빠르게 확인하고 싶을 때도 변경 블록 단축키가 유용합니다.
Cmd + Option + G(macOS)로 다음 변경 지점으로 이동하고 열려 있는 변경 블록을 전부 접으려면 Esc만 누르면 돼요.
파일 히스토리
특정 파일이 언제 어떻게 변경되었는지 추적하고 싶을 때가 있잖아요. 파일 히스토리 기능은 개별 파일의 커밋 이력을 보여줍니다. 프로젝트 패널이나 Git 패널에서 파일을 우클릭하고 “View File History”를 선택하거나 에디터 탭을 우클릭해도 열려요.
각 커밋의 작성자, 시간, 메시지가 나열되고 커밋을 선택하면 그 파일이 어떻게 변경되었는지 diff 뷰로 바로 확인됩니다. 터미널에서 git log와 git show를 번갈아 쓰던 작업을 한 화면에서 끝낼 수 있죠.
인라인 Blame
코드를 읽다가 “이 줄은 누가 왜 이렇게 바꿨지?” 궁금할 때가 있는데요. Zed는 현재 커서가 위치한 줄에 대한 Git blame 정보를 자동으로 표시해줍니다. 작성자와 커밋 메시지가 흐리게 나타나서 코드를 읽는 데 방해가 되지 않아요.
이 기능이 신경 쓰인다면 설정에서 끄거나 표시 딜레이를 조절하면 돼요.
{
"git": {
"inline_blame": {
"enabled": true,
"delay_ms": 600
}
}
}
enabled를 false로 바꾸면 완전히 끌 수 있고 delay_ms 값을 조절하면 커서를 옮긴 뒤 blame 정보가 나타나기까지의 대기 시간을 밀리초 단위로 설정할 수 있습니다.
스테이징과 커밋
Zed에서 스테이징은 두 가지 방식으로 할 수 있어요.
첫 번째는 프로젝트 디프를 활용하는 방법입니다. diff 뷰에서 각 변경 블록을 확인하면서 선택적으로 스테이지하는 거예요. 코드 리뷰하듯이 변경 사항을 하나씩 검토하면서 “이건 커밋에 포함하고 저건 아직 빼자”는 결정을 내리기 좋습니다.
두 번째는 Git 패널에서 직접 하는 방법이에요. 파일 목록에서 체크박스를 클릭해서 개별 파일을 스테이지하거나 상단 버튼으로 전체를 한번에 스테이지할 수 있습니다. 패널 하단에 커밋 메시지를 입력하고 커밋하면 되는데 아직 스테이지하지 않은 추적 파일은 자동으로 스테이지 처리됩니다.
커밋 메시지 입력 영역은 두 가지인데요. Git 패널 하단의 간단한 텍스트 영역에서 바로 커밋할 수도 있고 더 긴 메시지를 작성하고 싶다면 확장 커밋 에디터를 열 수 있습니다. Git 컨벤션에 따라 72자에서 자동 줄바꿈되는데 이 길이도 설정에서 바꿀 수 있어요.
{
"git_panel": {
"commit_editor": {
"preferred_line_length": 100
}
}
}
커밋 직후에 커밋 메시지 입력 영역 아래에 방금 커밋한 내용이 표시되는데 여기서 “Uncommit” 버튼을 누르면 git reset HEAD^ --soft와 같은 효과로 커밋을 되돌릴 수 있습니다.
실수로 빠트린 파일이 있거나 커밋 메시지를 수정하고 싶을 때 유용하죠.
Fetch, Push, Pull
원격 저장소와의 동기화도 Git 패널에서 바로 할 수 있어요.
git push를 터미널에서 실행하는 대신 Git 패널 상단의 Push, Pull, Fetch 버튼을 클릭하면 됩니다.
커맨드 팔레트에서 git: push, git: pull, git: fetch를 검색해서 실행할 수도 있어요.
Push할 때 Zed는 Git의 push 리모트 설정을 그대로 따릅니다.
pushRemote, remote.pushDefault, 트래킹 리모트 순서로 확인하기 때문에 .gitconfig에서 설정해둔 대로 동작하고 기존 워크플로우를 바꿀 필요가 없어요.
리모트가 여러 개인 프로젝트에서는 Git 패널에 리모트 선택기가 나타나서 push/pull할 리모트를 골라서 사용할 수 있어요.
브랜치 관리
새 브랜치를 만들거나 기존 브랜치로 전환하는 것도 에디터 안에서 됩니다.
하단 상태 바에 현재 브랜치 이름이 표시되는데 이걸 클릭하면 브랜치 전환기가 열려요.
여기서 기존 브랜치를 검색해서 전환하거나 새 브랜치 이름을 입력해서 바로 만들 수 있습니다.
git switch나 git checkout -b를 터미널에서 실행하던 것과 같은 동작이에요.
커맨드 팔레트의 git: branch나 git: switch로도 같은 작업을 할 수 있습니다.
브랜치 삭제도 가능한데요. 브랜치 전환기를 열고 삭제할 브랜치를 찾아서 삭제 옵션을 선택하면 돼요. 실수 방지를 위해 확인 절차를 거치고 현재 체크아웃된 브랜치는 삭제할 수 없으니 먼저 다른 브랜치로 전환해야 합니다.
스태시
작업하다가 급하게 다른 브랜치로 넘어가야 할 때 커밋하기엔 애매한 변경 사항이 있잖아요.
git stash를 쓰면 되는데 Zed에서는 Git 패널의 메뉴 버튼(⋯)을 클릭하고 “Stash All”을 선택하면 됩니다.
스테이지 여부에 관계없이 모든 변경 사항이 스태시에 저장되고 작업 디렉토리가 깨끗해져요.
커맨드 팔레트의 git: stash all로도 같은 동작을 할 수 있습니다.
스태시 관리도 Git 패널 메뉴에서 “View Stash”를 선택하면 스태시 피커가 열립니다. 저장된 스태시 목록을 시간순으로 볼 수 있고 각 스태시의 diff를 열어서 어떤 변경이 저장되어 있는지 확인하기도 좋아요.
스태시 피커에서 할 수 있는 작업은 이렇습니다.
- Apply — 스태시를 적용하되 목록에는 남겨둡니다
- Pop — 스태시를 적용하고 목록에서 제거합니다
- Drop — 적용하지 않고 스태시를 삭제합니다
가장 최근 스태시를 빠르게 적용하고 싶다면 Git 패널 메뉴에서 “Stash Pop”을 바로 선택할 수도 있어요.
머지 충돌 해결
머지나 리베이스 후에 충돌이 발생하면 Zed가 충돌 영역을 하이라이트하고 해결 버튼을 표시합니다. Git 패널에서는 충돌 파일에 경고 아이콘이 나타나고 프로젝트 디프에서도 확인할 수 있어요.
충돌 영역에는 세 가지 버튼이 표시됩니다. 현재 브랜치의 변경을 유지하는 버튼, 들어오는 브랜치의 변경을 유지하는 버튼, 그리고 양쪽 변경을 모두 유지하는 버튼이에요. 버튼에 실제 브랜치 이름이 표시되니까 어떤 변경이 어디서 온 건지 헷갈릴 일이 없습니다.
복잡한 충돌은 버튼으로 해결하기 어려울 수 있는데 그때는 파일을 직접 편집해서 <<<<<<<, =======, >>>>>>> 마커를 제거하고 원하는 내용만 남기면 됩니다.
충돌을 모두 해결한 파일은 스테이지하고 커밋하면 머지가 완료돼요.
AI 커밋 메시지 생성
커밋 메시지 작성이 번거로울 때가 있죠. Zed는 LLM을 활용해서 변경 사항을 분석하고 커밋 메시지를 자동으로 생성해주는 기능이 있습니다.
Git 패널의 커밋 메시지 입력 영역 왼쪽 하단에 연필 아이콘이 있는데 이걸 클릭하면 AI가 스테이지된 변경 사항을 읽고 적절한 커밋 메시지를 작성해줍니다.
커맨드 팔레트에서 git: generate commit message를 실행해도 같은 결과를 얻을 수 있어요.
커밋 메시지 생성은 단순한 작업이라 가벼운 모델이면 충분합니다. 설정에서 사용할 모델을 지정할 수 있어요.
예를 들어, VSCode의 처럼 Copilot을 사용하려면 provider를 copilot_chat으로 설정하고 원하는 모델 이름을 입력하면 됩니다.
{
"agent": {
"commit_message_model": {
"provider": "copilot_chat",
"model": "claude-haiku-4.5",
},
}
}
Anthropic이나 OpenAI를 쓰고 싶다면 provider와 model만 바꾸면 돼요.
{
"agent": {
"commit_message_model": {
"provider": "anthropic",
"model": "claude-haiku-4-5-20251001"
}
}
}
{
"agent": {
"commit_message_model": {
"provider": "openai",
"model": "gpt-4o-mini"
}
}
}
커밋 메시지 스타일 설정
생성되는 커밋 메시지의 형식을 팀 규칙에 맞게 바꾸고 싶다면 커맨드 팔레트에서 agent: open rules library를 실행하고 왼쪽에서 “Commit message” 규칙을 선택하면 됩니다.
여기에 작성한 프롬프트가 AI에게 전달되어 커밋 메시지 스타일을 제어해요.
예를 들어 Conventional Commits 형식을 따르고 싶다면 이렇게 작성할 수 있어요.
Write commit messages following the Conventional Commits format:
<type>(<scope>): <description>
Types: feat, fix, docs, style, refactor, test, chore
Keep the subject line under 50 characters.
Do not include a body unless the change is complex.
한글로 커밋 메시지를 작성하는 팀이라면 이런 규칙을 넣을 수 있고요.
커밋 메시지를 한국어로 작성해주세요.
제목은 "~하다" 형태의 명령문으로 50자 이내로 작성합니다.
예시: "로그인 페이지에 비밀번호 찾기 링크 추가하다"
한 줄 요약만 원하는지, 본문까지 포함할지도 규칙으로 조절됩니다.
Write a single-line commit message. No body, no footer.
Be specific but concise, under 50 characters.
여러 줄 형식을 선호한다면 이렇게 하면 돼요.
Write commit messages with:
- A subject line under 50 characters
- A blank line after the subject
- A body explaining why the change was made (not what changed)
- Wrap body lines at 72 characters
Rules 파일(.rules 디렉토리)에 커밋 메시지 관련 지시를 넣어두면 Rules Library의 규칙과 함께 적용되니까 프로젝트별로 다른 규칙을 사용하기도 좋습니다.
Git 호스팅 서비스 연동
Zed는 코드 안에 있는 커밋 해시나 이슈 번호, PR 번호를 자동으로 인식해서 클릭 가능한 링크로 만들어줍니다. GitHub, GitLab, Bitbucket, SourceHut, Codeberg를 기본 지원해요.
셀프 호스팅 인스턴스를 쓰고 있다면 리모트 URL에 gitlab이나 gitea 같은 키워드가 포함되어 있으면 자동으로 인식합니다.
키워드가 없는 경우에는 설정에서 직접 지정하면 돼요.
{
"git_hosting_providers": [
{
"provider": "gitlab",
"name": "사내 GitLab",
"base_url": "https://git.example.corp"
}
]
}
코드의 특정 줄을 동료에게 공유하고 싶을 때는 퍼머링크 기능이 유용합니다. 라인을 선택하고 우클릭해서 “Copy Permalink”를 선택하면 해당 커밋 시점의 코드를 가리키는 영구 링크가 클립보드에 복사됩니다. 나중에 코드가 변경되어도 링크는 항상 원래 코드를 보여주니까 코드 리뷰나 버그 리포트에서 정확한 코드 위치를 공유할 때 좋아요.
Zed를 Git 에디터로 설정하기
터미널에서 git commit을 실행했을 때 Zed에서 커밋 메시지를 편집하고 싶다면 git config로 코어 에디터를 Zed로 설정하면 됩니다.
$ git config --global core.editor "zed --wait"
쉘 환경 변수로 설정하는 방법도 있어요.
export GIT_EDITOR="zed --wait"
--wait 플래그가 핵심인데 이걸 붙여야 Zed에서 파일을 닫을 때까지 Git이 기다립니다.
이 설정을 하면 인터랙티브 리베이스나 머지 커밋 메시지 편집 같은 작업도 Zed에서 처리돼요.
주요 단축키 정리
Git 패널에서 자주 쓰는 단축키를 정리하면 이렇습니다.
| 기능 | macOS | Windows/Linux |
|---|---|---|
| Git 패널 열기 | Cmd + Shift + G | Ctrl + Shift + G |
| 프로젝트 디프 | Cmd + Shift + D | Ctrl + Shift + D |
| 커밋 | Cmd + Enter | Ctrl + Enter |
| 전체 스테이지 | Cmd + A | Ctrl + A |
| 다음 변경 블록 이동 | Cmd + Option + G | Ctrl + Alt + G |
| 변경 블록 접기 | Esc | Esc |
| Blame 토글 | 커맨드 팔레트 | 커맨드 팔레트 |
커맨드 팔레트에서 git을 입력하면 사용 가능한 모든 Git 명령어가 나타나니까 단축키를 외우지 않아도 됩니다.
자주 쓰는 명령어에는 커스텀 키바인딩을 설정해두면 더 편해요.
마치며
Zed의 Git 통합은 터미널에서 하던 Git 작업 대부분을 에디터 안으로 가져옵니다. Git 패널에서 상태 확인부터 스테이징, 커밋, 푸시까지 한 곳에서 처리되고 프로젝트 디프로 변경 사항을 편집하면서 동시에 리뷰할 수 있죠. 스태시, 브랜치 관리, 머지 충돌 해결까지 지원하니까 정말 복잡한 Git 작업이 아닌 이상 터미널로 나갈 일이 거의 없어요.
AI 커밋 메시지 생성은 특히 반복적인 커밋 작업에서 시간을 많이 절약해줍니다. 팀 규칙에 맞게 커밋 메시지 형식을 설정해두면 일관된 커밋 히스토리를 유지하는 데도 도움이 되고요.
물론 Zed가 지원하지 않는 고급 Git 작업도 있는데 그때는 Zed에 내장된 터미널을 쓰면 됩니다. Zed 에디터 소개와 함께 읽으시면 더 넓은 그림을 이해하는 데 도움이 될 거예요.
자세한 내용은 Zed Git 공식 문서에서 확인해보세요.
This work is licensed under
CC BY 4.0