이번 주에는 깃과 깃허브의 꽃인! ‘협업’과 ‘브랜치(branch)’에 대해 알아보았다!
< 깃과 깃허브로 협업하기 (feat. 브랜치) >
깃과 깃허브로 협업하는 흐름과 그 속에서의 브랜치의 역할을 복습하겠다. 그 흐름은 아래와 같다.
이 과정 속에서 여러 git 명령어들이 쓰이는데, 상당히 많은 명령어들이 있기 때문에, 꼭 짚고 넘어가고 싶은 명령어들이나, 몰랐던 명령어들만 간단하게 언급하려고 한다.
1) (개발자) 로컬 개발 환경 설정
- 기여하고 싶은 레포 fork 후 git clone
- git remote add로 원격저장소 추가
⭐️git fetch VS git pull
* fetch : 원격 저장소에 있는 최신 버전을 로컬로 가져와서 업데이트할 때 쓴다. 자동으로 merge하지 않기 때문에 안정적이기 때문에 권장.
* pull : fetch + 현재 작업 코드와 merge / 코드가 합쳐지기 때문에 주의해서 사용
![](https://blog.kakaocdn.net/dn/rE8iU/btsvvEfy3co/j8hRVv02NjZyWZJ3FncRo1/img.jpg)
2) (개발자) 이슈 확인하기
-github issue에서 해결해야할 일 확인
3) (개발자) 작업 branch 만들기
-브랜치 전략 수립
![](https://blog.kakaocdn.net/dn/W7mQq/btsvluLvUZY/uibu6EvHrOlH20G65iklqK/img.jpg)
⭐️브랜치(branch)란?
![](https://blog.kakaocdn.net/dn/9TW1l/btsvlymNtG4/vW7KvmN1blnPkXT2mRKVUk/img.jpg)
- master 또는 main 브랜치가 기본값
- git branch : 새 브랜치 생성 (생성 후 이동 X)
- git switch : 브랜치 변경
- git log —online —graph —all : 한눈에 확인하기
⭐️ 브랜치가 안정적일수록 커밋이 뒤처진다!
💜이번 수업에서 브랜치에 대한 개념을 제대로 알 수 있어서 좋았다.
용도나 단계별로 브랜치를 나눠서 작업하는 것은 저번 학기 서버시스템구축실습에서 직접 부딪히면서 익혔는데, 브랜치가 커밋을 왔다갔다할 수 있는 포인터이고, SHA-1 체크섬, 즉 해시값에 불과하다는 것은 처음 알았다.
4) (개발자) 코드 수정하고 Push하기
- git push [원격 저장소 별명] [브랜치 이름] : 원격 저장소에 내가 로컬에서 작업한 걸 올리기
- git branch -vv : 로컬 브랜치 목록과 추척하고 있는 원격 브랜치를 보여줌
5) (개발자) Pull Request 만들기
⭐️커밋은 가능한 한 작은 단위로 쪼개서 할 것!!
- merge가 가능한지 확인 후 PR요청
⭐️한 브랜치에서 다른 브랜치로 합치기 : merge VS rebase
-> 최종 결과물은 같으나, rebase가 커밋 히스토리가 더 깔끔!(권장)
🔥Merge Conflict : 수동으로 해결해야..!🥲
6) (메인테이너, 팀원) 코드 리뷰 하기
- 깃허브 코멘트
7) (개발자) 코드 리뷰 반영하기
- 작업 중간에 다른 요청이 들어와서 브랜치를 변경해야할때!! -> Stashing (임시 저장)
- git stash push : 작업 중인 내용 임시 저장 (이후 가장 최근 커밋으로 돌아감)
- git stash apply : stash에 적용했던 내용 복원
- git stash apply —index : staged 상태까지 복원
- git stash drop : 해당 stash 삭제
- git stash pop : 내용 복원 후 stash 제거
💜스태싱에 대한 개념과 원리를 자세히 알 수 있어서 좋았다! 사실 스태싱을 몰랐을 때에는, 작업하다가 다른 요청이 들어와서 코드를 고쳐야할때, pull했을 때 conflict되는 게 무서워서..🥲 로컬에서 작업하던 코드를 다른 메모장에다가 옮겨둔 뒤, working directory에 작업하던 코드들은 다 삭제하고 pull 받은 뒤 다시 코드를 옮겨넣는 그런 번거로운 노동을 했었는데, 이제 앞으로는 그럴 일이 있으면 스태싱을 이용하면 되니까, 배운 것을 이용할 생각에 기분이 좋다!
8) (메인테이너) Pull Request Merge하기
- Merge하면 머지 커밋이 생기고, issue도 closed됨
9) (개발자) 작업 branch 삭제하기
- git branch -D [브랜치 이름]
'개발냥발' 카테고리의 다른 글
오픈소스 보고서 7주차 (0) | 2023.10.23 |
---|---|
오픈소스 6주차 보고서 - 도커 실습 (0) | 2023.10.17 |
오픈소스 5주차 보고서 (0) | 2023.10.09 |
오픈소스 3주차 보고서 - Git (0) | 2023.09.18 |
오픈소스SW 2주차 보고서 - DevOps와 GCP (0) | 2023.09.11 |