1. 실무 워크플로우: Git Flow vs GitHub Flow
코드를 어떻게 합치고 배포할 것인가? 팀의 규모와 제품의 특성에 따라 브랜치를 관리하는 전략이 달라집니다.
"Rebase는 역사를 다시 쓰는 강력한 마법입니다. 하지만 남들과 공유하는 브랜치에서는 절대 이 마법을 남발해선 안 됩니다." – 시니어 데브옵스 엔지니어
2. 영원한 난제: Merge vs Rebase 비교
두 브랜치를 합치는 방법에는 두 가지가 있습니다. 결과를 만들어내는 방식이 완전히 다릅니다.
3. 패닉 금지! Merge Conflict(충돌) 해결하기
같은 파일의 같은 라인을 두 명의 개발자가 수정했을 때 발생하는 것이 충돌(Conflict)입니다. 두려워하지 마세요, 해결하는 공식이 있습니다.
4. 목숨을 구하는 마법의 고급 명령어들
코드를 날려 먹었거나, 남의 브랜치에서 커밋 하나만 훔쳐(?) 오고 싶을 때 사용하는 고급 스킬들입니다.
- 🍒 체리픽 (Cherry-pick): 다른 브랜치에 있는 특정 커밋 하나만 내 브랜치로 가져옵니다.
git cherry-pick <commit-hash> - 📦 스태시 (Stash): 하던 작업을 임시 보관소에 숨기고 빈 상태로 만듭니다. 급하게 브랜치를 변경해야 할 때 씁니다.
git stash(보관) ➔git stash pop(꺼내기) - ✏️ 어멘드 (Amend): 방금 친 커밋 메시지에 오타가 났거나, 파일을 하나 빼먹었을 때 최신 커밋을 수정합니다.
git commit --amend - 🚑 리플로그 (Reflog): 궁극의 타임머신. git reset으로 날려버린 커밋조차 찾을 수 있는 Git의 모든 행동 기록부입니다.
git reflog(기록 해시 확인) ➔git reset --hard <hash>
마무리: 핵심 요약표
| 상황 / 목적 | 명령어 | 비고 |
|---|---|---|
| 히스토리 보존 병합 | git merge <branch> |
Merge Commit 발생 |
| 일직선 깔끔한 병합 | git rebase <branch> |
원격 브랜치에는 사용 금지 |
| 충돌 병합 취소 | git merge --abort |
병합 이전 상태로 복구 |
| 작업 임시 저장 | git stash |
Staging되지 않은 변경사항 숨김 |
| 모든 조작 기록 보기 | git reflog |
실수 복구의 마지막 희망 |