diff --git a/app/Http/Controllers/AcademyController.php b/app/Http/Controllers/AcademyController.php index 530e041c..9f9ef87d 100644 --- a/app/Http/Controllers/AcademyController.php +++ b/app/Http/Controllers/AcademyController.php @@ -98,6 +98,15 @@ public function gitPolicy(Request $request): View|Response return view('academy.git-policy'); } + public function gitTools(Request $request): View|Response + { + if ($request->header('HX-Request')) { + return response('', 200)->header('HX-Redirect', route('academy.git-tools')); + } + + return view('academy.git-tools'); + } + public function nginxEncyclopedia(Request $request): View|Response { if ($request->header('HX-Request')) { diff --git a/resources/views/academy/git-tools.blade.php b/resources/views/academy/git-tools.blade.php new file mode 100644 index 00000000..ae70e94a --- /dev/null +++ b/resources/views/academy/git-tools.blade.php @@ -0,0 +1,968 @@ +@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로 바로 사용 가능.
+