가장 중요한 황금률 : 브랜치에서 직접 작업하지 않기
한가지 중요한 규칙이 있다면 main 브랜치(or master)는 언제나 모두가 믿고 사용할 수 있는, 안정적인 '최종버전'이어야 합니다.
1. 프로젝트 복제하기
팀의 원격 저장소(Github)에 있는 프로젝트를 내 컴퓨터에 그대로 복제해오는 과정입니다.
git clone [GitHub 저장소 주소]
2. 내 작업 공간 만들기
main 브랜치를 건들지 않기 위해, 새로운 기능을 만들거나 버그를 수정할 나먼의 branch를 만듭니다.
# 'feature/login' 이라는 이름의 새 브랜치를 만들고, 그 브랜치로 이동합니다.
git checkout -b feature/login
브랜치 이름은 보통 feature/기능이름 또는 bugfix/버그이름처럼 짓습니다.
3. 최신 내용 동기화 하기 (git pull)
내가 작업하는 동안 다른 팀원이 main 브랜치에 새로운 내용을 업데이트 했을 수 있기 떄문에
최신 내용을 먼저 컴퓨터로 가져와야 충돌을 막을 수 있습니다.
# 원격(origin)의 main 브랜치에 있는 최신 내용을 가져옵니다.
git pull origin main
4. 내 작업물 저장하기 (git add & commit)
내 브랜치(feature/login)에서 열심히 코드를 작성하고 수정합니다. 마무리 되면 변경된 내용을 내 개인 저장 공간(로컬 저장소)에 기록합니다.
# 1. 변경된 모든 파일을 저장 목록에 추가
git add .
# 2. "로그인 기능 구현"이라는 메시지와 함께 저장
git commit -m "feat: 로그인 기능 구현"
5. 내 작업물 공유하기 (git push)
로컬에 저장된 내 브랜치를 다른 팀원들도 볼 수 있게 원격 저장소(GitHub)에 업로드 합니다.
# 원격(origin)에 내 브랜치(feature/login)를 올립니다.
git push origin feature/login
6. 코드 리뷰 요청하기 (Pull Request)
내 작업이 완료 되었으니, 내가 만든 브런치를 main 브런치에 합쳐달라고 공식적으로 요청하는 과정
이 과정은 터미널이 아닌 Github 웹사이트에서 이뤄집니다.
과정:
- GitHub 저장소에 접속하면, 방금 push한 브랜치에 대해 "Compare & pull request" 버튼이 보입니다.
- 버튼을 클릭하여 어떤 작업을 했는지 상세히 설명하고 Pull Request(PR)를 생성합니다.
- 다른 팀원들이 코드를 보고 의견을 남기거나(코드 리뷰), 승인(Approve)을 해줍니다.
- 모두가 동의하면, 'Merge pull request' 버튼을 눌러 내가 만든 feature/login 브랜치의 내용이 드디어 main 브랜치에 안전하게 합쳐집니다.
문제 상황: 충돌(Conflict) 해결하기
- 언제 발생하나요?
- 내가 A라는 파일의 3번 라인을 수정했는데, 다른 팀원도 똑같이 A 파일의 3번 라인을 수정해서 먼저 main에 합쳐버렸을 때 발생합니다. Git은 누구의 수정이 맞는지 스스로 판단할 수 없어 우리에게 알려줍니다.
- 어떻게 해결하나요?
- 충돌이 발생한 파일을 열면, <<<<< HEAD, =====, >>>>> 같은 이상한 기호들이 보입니다.
- <<<<< 와 ===== 사이는 내 코드, ===== 와 >>>>> 사이는 팀원의 코드입니다.
- 팀원과 상의하여 어떤 코드를 남길지 결정하고, 나머지 코드와 특수 기호들을 모두 직접 손으로 지웁니다.
- 수정이 완료되면, 다시 git add와 git commit으로 충돌을 해결했다는 사실을 저장하면 끝입니다.
반응형