Git의 핵심 기능 가이드: 브랜치, 머지, 스태시
1. Branch: Git의 평행우주
Git 브랜치는 개발자에게 독립적인 작업 공간을 제공하는 가장 강력한 도구입니다. 평행우주처럼 메인 코드베이스와 분리된 공간에서 자유롭게 개발할 수 있게 해주죠.
브랜치 전략
일반적인 Git 브랜치 전략은 다음과 같은 구조를 가집니다:
- main (또는 master): 원본 혹은 최종본
- develop: 개발 중인 코드
- feature/: 새로운 기능 개발
- hotfix/: 긴급 버그 수정
- release/: 배포 준비
2. Merge: 평행우주의 통합
서로 다른 브랜치를 하나로 합치는 작업, 바로 머지입니다. 개발된 기능을 메인 코드베이스에 통합할 때 사용하죠.
머지의 두 가지 방식
Fast-forward 머지
- 가장 단순한 형태의 머지
- 브랜치가 직선적으로 진행된 경우 발생
- 별도의 머지 커밋 없이 포인터만 이동
3-way 머지
- 두 브랜치가 각각 변경사항을 가진 경우
- 새로운 머지 커밋 생성
- 브랜치의 변경 이력 보존
3. Stash: 안전한 코드 관리의 시작
현업에서 Git을 사용하다 보면 머지 충돌은 피할 수 없는 현실입니다. 하지만 스태시를 활용하면 이러한 상황을 더 효과적으로 관리할 수 있습니다.
기본 스태시 명령어
# 현재 변경사항 저장
git stash save "로그인 기능 작업 중"
# 스태시 목록 확인
git stash list
# 가장 최근 스태시 적용 및 삭제
git stash pop
# 특정 스태시 적용 (삭제하지 않음)
git stash apply stash@{2}
# 특정 스태시 삭제
git stash drop stash@{0}
머지 전 스태시 활용의 장점
- 작업 중인 변경사항으로 인한 충돌 방지
- 더 명확한 머지 충돌 해결 가능
- 실수로 작업 중인 코드가 머지되는 것을 방지
- 다른 개발자의 변경사항을 쉽게 통합
실전 시나리오
1. 메인 브랜치와의 동기화
# 현재 작업 중인 내용 저장
git stash save "feature/login 작업 중 머지 전 저장"
# 메인 브랜치 내용 가져오기
git checkout main
git pull
# 작업 브랜치로 돌아와서 메인 내용 머지
git checkout feature/login
git merge main
# 머지 완료 후 작업 내용 복원
git stash pop
2. 특정 커밋 가져오기
# 현재 작업 저장
git stash save "cherry-pick 전 작업 저장"
# 특정 커밋 가져오기
git cherry-pick abc123def
# 작업 내용 복원
git stash pop
주의사항과 팁
스태시 내용 확인
# 스태시 변경사항 상세 확인
git stash show -p stash@{0}
충돌 해결 준비
# 스태시 적용 시 충돌이 예상되는 경우
git stash apply --index # 스테이징 영역까지 복원
실전 머지 워크플로우
1. 작업 상태 체크 및 백업
# 변경사항 확인
git status
# 변경 내용 임시 저장
git stash save "feature/ms 머지 전 백업"
2. 브랜치 최신화
# 메인 브랜치 최신화
git checkout main
git pull origin main
# 작업 브랜치 최신화
git checkout feature/ms
git merge main
3. 작업 내용 복원 및 충돌 해결
# 스태시 복원
git stash pop
# 충돌 발생 시
git status # 충돌 파일 확인
# 충돌 해결 후
git add .
git commit -m "fix: 머지 후 충돌 해결"
마치며
Git의 브랜치, 머지, 스태시는 효과적인 코드 관리와 협업을 위한 필수 도구입니다.
특히 스태시를 활용한 안전한 머지 프로세스는 팀 협업에서 매우 중요한 역할을 했습니다. 마음의 평화..최고
한번 사용해 보시라요!
'Code > Trouble Shooting' 카테고리의 다른 글
[Colab] 코랩에서 .zip 압축 풀기 (0) | 2022.07.24 |
---|---|
[GitHub] GitHub Markdown 이미지 사이즈 조절 (0) | 2022.06.23 |
[Flask] Flask 생성, 실행 정리하기 (0) | 2022.06.21 |
댓글