@extends('layouts.app') @section('title', 'Git 관리도구') @push('styles') @endpush @section('content')
VS Code 기반 IDE에서 Git 브랜치를 시각적으로 관리하는 도구 추천과 사용법
비유: 네비게이션 없이 운전하기
주소만 보고 처음 가는 곳을 찾아가는 것은 가능하지만, 네비게이션이 있으면 훨씬 빠르고 안전하다. Git 시각화 도구는 코드 저장소의 네비게이션이다.
CLI에서 보는 브랜치 그래프
시각화 도구에서 보는 같은 내용
시각화 도구는 색상으로 브랜치를 구분하고, 마우스 클릭만으로 커밋 상세 정보를 볼 수 있다. Merge와 Rebase 결과도 즉시 확인할 수 있어 실수를 방지한다.
색상 구분
브랜치별 다른 색상으로 한눈에 구분 가능
클릭 조작
명령어 대신 마우스 클릭으로 Merge, Rebase 실행
Diff 미리보기
커밋 클릭만으로 변경 사항을 바로 확인
실수 방지
위험한 작업 전 시각적 확인으로 사고 방지
비유: 지하철 노선도
Git Graph는 지하철 노선도처럼 브랜치를 보여준다. 각 노선(브랜치)이 어디서 갈라지고 합쳐지는지 한눈에 파악할 수 있다.
설치 방법
사용 방법
Git Graph: View Git Graph)
주요 기능
| 기능 | 설명 | 사용법 |
|---|---|---|
| 브랜치 그래프 | 모든 브랜치를 색상별 그래프로 표시 | 자동 표시 |
| 커밋 상세 | 변경 파일, Diff 미리보기 | 커밋 클릭 |
| 브랜치 생성 | 커밋에서 새 브랜치 생성 | 커밋 우클릭 > Create Branch |
| Merge | 브랜치를 현재 브랜치에 병합 | 브랜치 우클릭 > Merge |
| Rebase | 현재 브랜치를 다른 브랜치 위에 재배치 | 브랜치 우클릭 > Rebase |
| Cherry-pick | 특정 커밋만 가져오기 | 커밋 우클릭 > Cherry Pick |
| 태그 | 커밋에 버전 태그 추가 | 커밋 우클릭 > Add Tag |
비유: CCTV 재생
GitLens는 코드의 CCTV와 같다. 어떤 줄이든 클릭하면 누가(작성자), 언제(날짜), 왜(커밋 메시지) 수정했는지 바로 확인할 수 있다.
설치 방법
코드 줄 끝에 최근 수정자와 커밋 메시지가 흐릿하게 표시된다. 커서를 올리면 상세 정보를 볼 수 있다.
파일의 전체 변경 이력을 시간순으로 보여준다. 특정 시점의 내용으로 쉽게 비교할 수 있다.
Git Graph와 유사한 시각적 브랜치 그래프. GitLens+ (유료) 기능이지만, Git Graph 확장으로 대체 가능하다.
무료 vs 유료 비교
| 기능 | 무료 | 유료 (Pro) |
|---|---|---|
| Inline Blame | ✔ | ✔ |
| File History | ✔ | ✔ |
| Line History | ✔ | ✔ |
| Status Bar Blame | ✔ | ✔ |
| Commit Graph | ✘ | ✔ |
| Visual File History | ✘ | ✔ |
| Worktrees | ✘ | ✔ |
* 무료 기능만으로도 충분히 유용하다. Commit Graph는 Git Graph 확장으로 대체하면 된다.
주요 단축키
| 단축키 | 기능 | 설명 |
|---|---|---|
| Ctrl+Shift+G | Source Control 열기 | Git 패널 열기 |
| Ctrl+Shift+P | 명령 팔레트 | "Git:" 입력 후 모든 Git 명령 접근 |
| Ctrl+Enter | 커밋 | Source Control에서 메시지 입력 후 커밋 |
| 파일 클릭 | Diff 보기 | 변경된 파일 클릭 시 Diff 뷰어 열림 |
| + 버튼 | Stage (git add) | 파일 옆 + 클릭 시 스테이징 |
| - 버튼 | Unstage | 스테이지된 파일 옆 - 클릭 시 언스테이지 |
내장 기능 활용
| 도구 | 분류 | 가격 | OS | Rebase 시각화 | 장점 | 단점 | 추천도 |
|---|---|---|---|---|---|---|---|
| Git Graph | VS Code 확장 | 무료 | All | ✔ | IDE 통합, 경량 | 대규모 레포에서 느림 | |
| GitLens | VS Code 확장 | 무료+유료 | All | 유료 | Inline Blame, 상세 이력 | 일부 기능 유료 | |
| VS Code SCM | 내장 | 무료 | All | ✘ | 설치 불필요, 기본 제공 | 그래프 없음 | ★ |
| GitKraken | 독립 GUI | 유료 | Win/Mac/Linux | ✔ | 직관적 UI, 드래그&드롭 | 유료, 무거움 | ★ |
| Sourcetree | 독립 GUI | 무료 | Win/Mac | ✔ | 무료, Atlassian 제품 | Linux 미지원, 느림 | ★ |
| Fork | 독립 GUI | 유료 | Win/Mac | ✔ | 경량, 빠른 속도 | Linux 미지원 | ★ |
| lazygit | 터미널 | 무료 | All | ✔ | 터미널 전용, 초경량 | 학습 필요 | ★ |
SAM 프로젝트 추천 조합: Git Graph (브랜치 시각화) + GitLens (코드 이력 추적) + VS Code SCM (기본 Git 작업). 이 3개면 별도 GUI 도구 없이 모든 Git 작업을 처리할 수 있다.
Merge 후 그래프 (다이아몬드 형태)
Rebase 후 그래프 (직선 형태)
| 항목 | Merge | Rebase |
|---|---|---|
| 그래프 모양 | 다이아몬드 (분기+합류) | 직선 |
| 이력 | 합류 기록 보존 | 깔끔한 직선 이력 |
| Merge 커밋 | 생성됨 | 생성 안 됨 |
| 안전성 | 안전 (기존 커밋 변경 없음) | 주의 필요 (커밋 해시 변경) |
| 추천 상황 | 공유 브랜치, PR 머지 | 로컬 feature 브랜치 정리 |
이미 Push한 브랜치에서 Rebase를 하면 안 된다!
Rebase는 커밋의 해시값을 변경한다. Push한 브랜치를 Rebase하면 원격 저장소와 이력이 달라져 다른 팀원들의 작업이 꼬이게 된다. Force Push가 필요해지며, 이는 매우 위험하다.
Git Graph에서 3개 저장소 전환하기
mng/, api/, react/)
Step-by-Step: feature 브랜치 작업 흐름
📖 관련 문서: SAM 프로젝트의 Git 정책, 커밋 메시지 규칙, 브랜치 전략은 Git 정책 페이지에서 자세히 확인할 수 있다.
비유: 터미널 속 미니 Git 데스크톱
lazygit는 터미널 안에서 동작하는 미니 Git 데스크톱 앱이다. 키보드만으로 Stage, Commit, Push, Branch 전환, Rebase까지 모든 Git 작업을 할 수 있다.
설치 방법
실행 및 기본 사용
핵심 단축키
| 키 | 기능 | 설명 |
|---|---|---|
| Space | Stage/Unstage | 파일 또는 줄 단위 스테이징 |
| c | Commit | 스테이지된 파일 커밋 |
| P | Push | 원격 저장소에 Push |
| p | Pull | 원격 저장소에서 Pull |
| n | New Branch | 새 브랜치 생성 |
| r | Rebase | 선택한 브랜치에 Rebase |
| M | Merge | 선택한 브랜치 Merge |
| e | Edit | 에디터로 파일 열기 |
| q | Quit | lazygit 종료 |
| ? | Help | 전체 단축키 보기 |
SSH 환경에서의 장점:
개발 서버에 SSH로 접속하면 GUI 도구를 사용할 수 없다.
lazygit를 설치해두면 서버에서도 시각적으로 Git을 관리할 수 있다.
ssh pro@114.203.209.83 접속 후
cd /home/webservice/mng && lazygit로 바로 사용 가능.