브랜치(branch)란 정확히 뭐냐
한 줄 정의
브랜치 = “같은 프로젝트의 평행 세계”
- 파일 복사본 ❌
- 프로젝트 타임라인을 갈라놓은 것 ⏱️
왜 필요하냐 (안 쓰면 생기는 참사)
브랜치 없이 팀플하면
- A가 코드 수정
- B가 동시에 수정
- 누가 덮어썼는지 모름
- 파일 깨짐
- 싸움 남
브랜치 쓰면
- 각자 자기 세계에서 작업
- 잘 되면 합침
- 망하면 버림
구조 그림 (머릿속에 이거 그리면 됨)
main ──●──●──●────────
\
feature-a ●──●
- main : 제출 / 배포용
- feature-a : 실험 / 기능 추가용
기본 브랜치 명령어 (필수)
브랜치 목록
git branch
브랜치 생성
git branch feature-a
브랜치 이동
git switch feature-a
(옛날 방식)
git checkout feature-a
만들고 바로 이동
git switch -c feature-a
팀플에서의 정석 흐름
- main은 건들지 않음
- 작업 시작할 때
-
git switch -c analysis-step3
- 작업 + 커밋
- 다 끝나면 main으로 합침 (merge)
branch에서 main과 master의 차이는? 그 개념은?
결론부터
- 기능 차이 없음
- 이름만 다름
왜 두 개가 있냐?
- 예전 기본값 → master
- 요즘 기본값 → main (GitHub 표준)
push vs pull (방향 감각)
핵심 비유
- push 👉 내 컴퓨터 → GitHub
- pull 👉 GitHub → 내 컴퓨터
conflict(충돌)란 뭐냐 + 안 죽는 법
conflict가 나는 정확한 조건
같은 파일의 같은 줄을
서로 다른 브랜치에서 수정했을 때
충돌 나면 나오는 공포 화면
<<<<<<< HEAD
내 코드
=======
상대 코드
>>>>>>> feature-a
이게 의미하는 것
- <<<<<<< HEAD
→ 현재 브랜치(main) - =======
→ 경계선 - >>>>>>> feature-a
→ 합치려는 브랜치
해결 방법 (패닉 금지)
1️⃣ 파일 열기
nano 파일명
또는 VS Code
2️⃣ 원하는 코드만 남기고
아래 전부 삭제:
<<<<<<<
=======
>>>>>>>
3️⃣ 저장
4️⃣ Git에 알려주기
git add 파일명
git commit
→ 끝