본문 바로가기
Git & GitHub

[Git & GitHub] 깃허브로 협업하기 - (3) git graph, fetch, pull, branch, switch, checkout, merge 명령어 사용하기

by junvely 2022. 11. 23.

 

지난 번에 협업 repo에서 새 프로젝트를 clone한 것에 이어서, git-flow에 대한 브랜치 규칙과 commit 규칙까지 설정하였다.

 

[Git & GitHub] 깃허브로 협업하기 - (1) Organization, clone

이번에 참여하게된 향수 프로젝트에서 새로운 FE 주니어 개발자 분이 합류하게 되면서 깃을 사용한 협업이 반드시 필요한 상황이 되었다. 지금까지는 혼자 프로젝트에 add - commit - push 하는 과정

junvelee.tistory.com

이번에는 git fetch로 현재까지 작업내용을 불러와  git graph를 확인하고, 해당 브랜치의 변경사항을 pull 한 후,

이어서 기능별 브랜치를 생성해 작업한 후 해당 기능별 브랜치에 add - commit - push 하는 과정을 정리해 보려고 한다. 

 


 

1. git graph에서 브랜치 확인하기

  • git fetch --all : git graph에서 git-flow를 확인한다.
$ git fetch --all

 

 

2. 브랜치 전체 목록 확인하기

  • 브랜치 전체 목록 확인
$ git branch -a

remotes/origin/~~~  : 원격저장소의 브랜치다.

 

  • 현재 브랜치 확인
$ git branch

 

 

3. dev 브랜치로 이동하기

* switch는 git checkout에서 분할된 명령어로 git에서 checkout은 branch를 변경하거나 혹은 파일을 복원하는데 사용하는데, checkout에 너무 많은 기능이 물려있어서 switch / restore가 추가가 되었다. switch는 branch 변경, restore은 파일 복원 시에 사용한다

$ git switch dev

 

 

4. dev 브랜치 모든 기록 가져오기

❗git pull을 진행하지 않고, 작업 후 커밋 등등 시 충돌이 발생할 수 있다. 작업 전 반드시 해당 브랜치를 pull 후에 작업한다.

$ git pull

 

 

5. dev 브랜치에서 기능별 브랜치를 생성 

이슈 번호로 기능별 브랜치를 생성한다 - ex) 001 

  • 브랜치 생성방법 1 

브랜치만 생성하기

$ git branch 001
  • 브랜치 생성방법 2

브랜치 생성과 checkout을 동시에 실행할 수 있다.

$ git checkout -b 001

또는

$ git switch -c 001

둘 다 같은 기능을 한다. 

브랜치 생성 완료

 

  • 브랜치 삭제

1. 로컬 브랜치를 삭제

$ git branch -d 001

2. 가끔 브랜치 삭제시 정상적으로 머지가 되어있지 않거나 충돌이 해결되지 않은 브랜치의 경우 아래와 같은 메시지와 함께 삭제가 불가능 할때가 있는데 병합 상태와 관계없이 강제로 삭제하려면 -D를 사용한다.

error: The branch ‘branch' is not fully merged.
If you are sure you want to delete it, run 'git branch -D branch'.
$ git branch -D 001

3. 원격 저장소 브랜치 삭제

$ git push origin --delete 001

 

 

6. 작업 진행 하기

위에서 branch 생성과 동시에 checkout 했기 때문에 001브랜치임을 다시 한번 확인하고, 이제부터 편하게 작업을 진행하면 된다.

  

 

7. 작업 후 add - commit - push 하기

지난번에 설정한 git commit convention 규칙에 맞게 커밋을 작성한 후 push한다.

이슈 번호가 001, type이 chore 일 경우 > chore : 001 - 기존의 작성된 코드 옮기기

Feat : 번호-새로운 기능을 추가
Fix : 번호-버그 수정
Design : 번호-CSS 등 사용자 UI 디자인 변경
Refactor : 번호-프로덕션 코드 리팩토링
Chore : 번호-패키지 관리자 구성 등 업데이트, Production Code 변경 없음
Merge pull request #순서 from Urscent-FE/브랜치

> 커밋 규칙
기능 : 이슈번호-작업내용 :wq(줄바꿈)
- 세부 작업 내용
- 세부 작업 내용

> 커밋 예시 
Feat : 001-회원 가입 기능 구현

- SMS, 이메일 중복확인 API 개발
  • add(해당 브랜치인지 확인)
$ git add .
  • commit 

- 커밋 메세지에 상세 내역 입력하는 방법(여러줄 입력하는 방법) - " 따옴표를 닫기 전에 enter하고 여러줄 입력 후 마지막에 "로 닫아주기

$ git commit -m "commit message line 1
commit message line2
commit message line3
...
commit message last line"
  • 커밋 수정하는 방법 
$ git commit --amend

git commit --amend 후 => i => 커밋 메세지 변경사항 수정 후 => 마지막에 :wq로 탈출 하여 커밋 수정완료

  • push 

push할 때, origin 001 브랜치에 push한다.

$ git push origin +001 // origin 001 브랜치에 푸쉬

 

 

8. Merge : Pull requests

github에서 커밋 완료 확인, dev브랜치로 merge(병합) 시킨다.

  • New pull request

 

  • Comparing changes

- 왼쪽은 병합시킬 base브랜치(main), 오른쪽은 비교하여 병합할 compare(dev)브랜치를 설정한다.

- ex) base : dev <- compare : 001  => 001브랜치를 dev브랜치로 병합시킴

 

  • Pull request 메세지 작성

Reviewers 코드리뷰를 요청할 사람을 지정해 준다.

 

  • merge 시 자동으로 생성되는 커밋 메세지
Merge pull request #순서 from Urscent-FE/dev