Ruff! Ruff!
[오픈소스] - GitHub을 활용한 협업방법 본문
1. 깃허브를 활용한 협업 순서
① (개발자) 로컬 개발 환경 설정
② (개발자) 이슈 확인하기
③ (개발자) 작업 branch 만들기
④ (개발자) 코드 수정하고 Push하기
⑤ (개발자) Pull Request 만들기
⑥ (메인테이너, 팀원) 코드 리뷰 하기
⑦ (개발자) 코드 리뷰 반영하기
⑧ (메인테이너) Pull Request Merge하기
⑨ (개발자) 작업 branch 삭제하기
2. remote repository
- git clone : 기존 저장소를 clone하기 (클론 시 자동으로 리모트 레포를 origin이라는 이름으로 추가)
- 자동으로 로컬의 마스터 브랜치가 리모트의 마스터 브랜치를 추적하도록 함
-git remote : 현재 프로젝트에 등록된 리모트 레포 확인
- git remote -v : 리모트 레포의 이름과 url확인
- git remote show [remote name] : 레포의 구체적인 정보 확인
- git remote add [name] [url] : 기존 플젝에 새 리모트 레포추가 (url 대신 upstream 사용 가능)
- git remote rename [old] [new] : 레포의 이름 변경
- git remote rm [name] : 레포 삭제
- git fetch [remote name] : 로컬에는 없지만, 리모트 레포에 있는 데이터를 모두 가져옴 (자주 사용해도 문제 없음)
- git pull [remote name] : fetch + 현재 작업 코드와 merge
- git pull --rebase premote name] : fetch + 현재 작업 코드와 rebase
** 가능하면 fetch & merge를 명시적으로 사용할 것
3. branch란?
- commit (스냅샷) 사이를 가볍게 이동할 수 있는 포인터
- commit 시 저장되는 것들 : 각 파일에 대한 blob, 파일과 디렉토리 구조에 대한 tree들, 메타데이터와 root tree를 가리키는 commit
- 파일을 수정하고 commit하면 이전 commit이 무엇인지도 저장
- master branch(main branch) : 레포를 처음 만들 때, 만들어지는 기본 branch
- git branch : 브랜치를 새로 파고, 옮기지는 않음 (새 브랜치는 지금 작업 중이던 마지막 커밋을 포인팅, HEAD라는 포인터 사용)
- git switch : branch 변경
-git log --online --graph --all : 명령을 통해 한 눈에 커밋 기록 파악
- git switch -c : 브랜치 생성하면서 변경
- git switch - : 이전 브랜치로 변경
* Branch 워크 플로우
1. Topic Branch : 한 가지 주제/ 작업을 위해 만든 짧은 호흡의 브랜치, 각 작업을 별도로 진행하다가 마스터 브랜치에 머지할 시점이 되면 순서에 관계 없이 머지
2. Remote-tracking Branch : 리모트 레포에 마지막으로 연결했던 순간에 브랜치가 무슨 커밋을 가리키고 있었는지를 나타냄
*git push [remote name] [branch name] : origin 저장소에 push
*Branch Tracking
- Upstream Branch : 트래킹하는 대상 브랜치 ( 리모트 트래킹 브랜치)
- Tracking Branch : Upstream Branch와 직접적인 연결고리가 있는 로컬 Branch
- git branch -vv : 로컬 브랜치 목록과 추적하고 있는 리모트 브랜치 목록을 보여주며, 로컬 브랜치가 얼마나 앞서 나가거나 뒤쳐지는지에 대한 내용도 보여줌
- git push [remote name] --delete [branch name] : 리모트 레포에서 대상 브랜치 삭제
* Stashing
- 작업 중간에 다른 요청에 브랜치 변경 -> 작업 중이던 내용은 커밋하지 않은 파일이 변경할 브랜치와 충돌 날 경우 브랜치 변경 불가능
-> 브랜치 변경 전에 가능하면 워킹디렉토리를 클린 상태로 정리
- git stash push : 작업 중인 내용 임시저장
(가장 최근 커밋으로 돌아감, 워킹디렉토리 깨끗해짐)
- git stash list : 저장한 stash 목록 확인
- git stash apply : stash에 적용했던 내용 복원
- git stash apply --index : stash에 적용했던 내용 staged 상태까지 복원
- git stash drop : 해당 스태시 삭제
- git stash pop : stash에 적용했던 내용 복원 후 stash제거
*Clean
- git clean : 작업하고 있던 내용 stashing 없이 cleaning
- 추적되고 있지 않는 모든 파일이 삭제되므로 신중히 사용
'CS' 카테고리의 다른 글
[오픈소스] - Docker 사용법 (3) | 2024.10.08 |
---|---|
[오픈소스] - 컨테이너와 도커 (1) | 2024.10.01 |
[오픈소스] - Git을 활용한 소스코드 관리 (1) | 2024.09.17 |
[오픈소스] - About DevOps (0) | 2024.09.13 |
서버 시스템 구축 실습 - 사용자 계정 인증 (0) | 2024.05.08 |