오늘은 Git과 GitHub 기초에 대한 강의를 들었다.
이론뿐만 아니라 직접 브랜치를 만들고, PR을 생성하고, 머지까지 실습해보면서
GitHub 협업 흐름을 한 번 끝까지 경험해볼 수 있었다.
협업 중이라면 revert,
혼자 작업 중이라면 상황에 따라 reset / restore를 선택하는 게 중요하다고 느꼈다
Git을 처음 사용할 때도 우리는 이미 main 브랜치에서 작업하고 있다.
브랜치는 말 그대로 나무 가지처럼,
기존 코드 흐름에서 독립된 작업 공간을 만들어주는 기능이다.
브랜치를 사용하는 이유
프로젝트 규모가 커질수록 브랜치 기반 개발은 선택이 아니라 필수다.
현재 브랜치 확인
git branch
새 브랜치 생성
git branch cherry-pick
브랜치 이동
git checkout cherry-pick
cherry-pick은
다른 브랜치의 특정 커밋 하나만 골라서 가져오는 기능이다.
Cherry-pick 특징
사용 예시
⚠️ Cherry-pick 주의점
커밋 간 충돌(conflict)이 발생할 수 있음
과거 커밋을 끼워 넣는 구조에서는 충돌 가능성 ↑
남용하면 히스토리 추적이 어려워짐
실무에서는 보통 cherry-pick보다
Pull Request(PR) + Merge 방식으로 협업한다.
이 브랜치의 변경 사항을 합치고 싶어요 라는 요청
변경 내용, 리뷰, 의견 공유의 공간
줄여서 PR이라고 부른다
PR에 대한 리뷰가 끝나면 코드 병합
GitHub UI에서 병합하는 경우가 일반적
아래는 내가 직접 실습해본 과정과 결과들이다.
1) 브랜치 생성하기
git branch login git branch # 생성한 브랜치 & 현재 브랜치 확인 git checkout login git branch
2) Readme.md 텍스트 추가 후, 커밋까지 진행
# github 기초 강의
## 로그인 기능 구현
- 로그인 명세서를 조회하려면 여기를 확인하세요.
위 내용 작성 후
git add Readme.md git commit -m "Finished: log" git push origin login

3) PR 생성하기

4) 코드 단위 리뷰 확인하기

5) 리뷰 끝내기

6) PR 브랜치 합치기(Merge)

7) 로컬에서 코드 pull 해오기
git checkout master git pull origin master


이슈 등록과 라벨 추가 실습

이슈 해결 완료 실습

실습 이력서 템플릿은 스파르타에서 제공받음
1) 배포할 저장소 준비하기
jiiimni.github.io

2) 이력서 템플릿 가져오기
git clone https:// ~ cd resume-template
3) 클론 저장소에 있는 .git 폴더 제거
ls -altr rm -rf .git/
4) 저장소 초기화, 그리고 푸시
git init git add . git commit -m "init: resume template" git remote add origin https://jiiimni.github.io.git git push origin main


배포 단계를 명확히 나눠 안정성과 협업 효율을 높인다.
Dev
기능 개발과 수정이 가장 활발한 브랜치
→ 개발 완료 후 Stage로 병합
Stage
배포 전 최종 테스트(QA, 통합 테스트) 환경
→ 문제 없으면 Prod로 병합
Prod
실제 사용자에게 배포되는 운영 브랜치
긴급 버그는 hotfix로 빠르게 대응
태그(tag)로 배포 이력 관리
staging 없이 바로 prod로 배포하면
- 검증 부족으로 장애 위험 증가
- 한 번에 많은 변경이 포함된 Fat Release 발생
-> 작은 단위로 자주 배포하는 Small Release가 더 안전
feature/
새로운 기능 개발
(develop에서 분기 → develop로 병합)
release/
배포 직전 안정화 브랜치
QA 및 버그 수정 후 main(master)로 병합
hotfix/
운영 중 발생한 긴급 버그 수정
main에서 분기 -> 수정 후 main + develop에 반영
1.0.0 -> 2.0.0)1.1.0 -> 1.2.0)1.0.1 -> 1.0.2)결국 프로젝트 규모와 팀의 개발 방식에 맞는 전략을 선택하는 것이 가장 중요하다.