Branch
: 기존 코드에 영향을 주지 않고 병렬적으로 작업할 수 있게 만들어주는 기능
- 브랜치 이름은 개발하려는 기능과 관련 있는 이름을 짓는 것이 좋음
(기능/해당기능이 하는 역할, ex; feature/signup) - 기능 새로 만들 때마다 브랜치 생성하
브랜치 생성 명령어
git branch <브랜치명>
브랜치 확인 명령어
git branch
브랜치 이동 명령어
git switch <브랜치명>
or
git checkout <브랜치명>
- checkout은 기존에 있던 명령어이고, switch는 새로 만들어진 것. 아무거나 써도 상관 X
브랜치 한 번에 생성 & 이동
git switch -c <브랜치명>
or
git checkout -b <브랜치명>
Merge
: 코드를 합치는 것
git merge <브랜치명>
- 합치고자 하는 브랜치로 이동 후, 합칠 브랜치를 merge 명령어 뒤에 넣어주면 됨
git stash
: 임시로 코드를 저장해주는 역할을 하는 명령어
- 급하게 브랜치 이동을 하고 싶은데, 이동이 안되는 경우 주로 사용
(이동하는 브랜치의 코드와 내가 변경한 코드에서 겹치는 부분이 있을 때 이동 불가)
git stash -u -m "메세지"
-u : untracked 파일(ex; 새로 만든 파일)들의 변경사항도 모두 저장하겠다는 뜻
-m : 커밋 메세지처럼 어떤 기능을 개발하는 중이었는지 간단하게 메세지를 작성할 수 있는 옵션
git stash list
- 해당 명령어로 임시 저장된 부분 확인 가능
- q를 누르면 빠져나올 수 있음
git stash apply <stash@{숫자}>
- 저장했던 것을 다시 되돌릴 때 사용하는 명령어
- stash@{숫자} 는 git stash list 명령어 입력시 확인 가능
git reset
: 과거의 커밋으로 되돌아갈 수 있게 해주는 명령어
git reset --hard <커밋id>
Pull Request
: 브랜치로 당겨와 합치는 것을 요청하는
- 협업시 보통 github에서 합침 ➡️ merge 전 코드리뷰가 가능하기 때문!
(git merge 명령어로 합치는 경우 거의 X) - 충돌여부 확인, 테스트 자동화 등 다양한 이점들이 존재
진행 방법
- push 후, 깃허브 홈페이지에서 Compare & pull request 버튼 클릭
(안생기거나 사라졌다면 pull requests 탭 클릭 후 New pull request 눌러주면 됨) - pull request 생성
- pull requests 탭에서 확인 (충돌 발생시 merge 불가)
- 리뷰 요청 및 승인 받기
- 로컬에서 pull해서 깃허브 코드와 로컬 저장소 코드 맞추기
- 코드 실행 후 문제 없는지 확인
- 문제 없으면 github에 merge
(코드 수정이나 충돌 해결한 경우, git add & git commit & git push 이후 merge)
⚠️ 만약, 다음과 같은 에러가 발생하게 되면
fatal: Need to specify how to reconcile divergent branches
아래 명령어 입력
git config pull.rebase false
실전 협업시 발생할 수 있는 문제에 대한 해결책
main 브랜치 ➡️ 배포용
기능 브랜치(ex; login) ➡️ 기능개발용
dev(or develop) 브랜치 ➡️ 테스트용
합치는 건 develop으로 합치고 배포가능하다 싶으면 main 브랜치로 가는 것.
진행 순서
- 깃허브에서 로컬로 dev 브랜치를 가져오기 (git clone)
- 로컬에서 기능개발용 브랜치로 브랜치 이동 (브랜치 생성 후)
- 코드 작성 후, (로컬)기능개발용 브랜치에서 push
- (깃허브)기능개발용 브랜치에서 dev로 merge
여기서 충돌을 하게 되면, (깃허브)dev브랜치에서 (로컬)기능개발용 브랜치로 pull 해서 문제 해결 후,
깃허브(기능개발용 브랜)로 push - merge 후, 로컬(dev 브랜)로 당겨오기
- 배포할 때는 (깃허브)dev브랜치에서 main브랜치로 merge
gitignore
: git이 관리하지 않으면 하는 파일을 .gitignore 파일에 작성
(ex; 비밀번호, 키 등이 숨겨져 있는 .env 파일 등)
- gitignore.io 라는 웹사이트를 활용하면 편리하게 불필요한 파일을 .gitignore에 추가해
'내일배움캠프(Sparta)' 카테고리의 다른 글
Chapter 1. 프로젝트 팀원 코드 이해 (0) | 2023.10.18 |
---|---|
[Git & Github] 기본 개념 및 기본 명령어 (1) | 2023.10.10 |