
오픈소스나 팀 프로젝트를 진행함에 따라 git fork를 자주 사용하게 된다.
협업 효율성과 안전성때문에 git fork를 사용하는데
보통 fork 작업 -> PR(Pull Request)의 흐름으로 진행된다.
원본 저장소를 복사해서 나만의 git 공간에서 안전하게 작업후
변경 내용을 commit 그리고 pull request로 변경사항을 제안한다.

우측 상단의 Fork 버튼을 눌러 본인 계정의 repository로 fork한다.
git clone https://github.com/내계정/저장소.git
내 로컬에 clone하여 fork한 파일들을 그대로 불러온다.
브랜치 생성 + 이동
git checkout -b feature/my-feature
브랜치 생성
git branch feature/my-feature
해당 브랜치로 이동
git checkout feature/my-feature
원하는 브랜치를 생성하고 작업하거나
그럴 생각이 없을 경우 해당 과정은 생략하고 main에서 작업한다
(하지만 브랜치를 통해 메인 브랜치에 영향을 주지 않으면서 새로운 기능 기발이나 수정 작업을 안전하게 진행하는게 좋다)
git add .
git commit -m "feat: 새로운 기능 추가"
git push origin feature/my-feature
혹은
git push origin main
변경사항을 내 git에 추가하고 commit 후 push한다
git add index.html -> index.html만 스테이징
git add . -> 현재 디렉토리 기준 모든 변경 사항을 스테이징
변경 사항에 대한 commit 메시지는 사람들이 정해놓은 규칙이 있다.
이를 따라주면 commit 메시지만으로 변경사항에 대한 추측이 가능하다.
일관된 commit 메시지를 작성하면 협업, 릴리즈, 추적 등에 유리하다.
주요 commit 타입
feat- 새로운 기능 추가
fix - 버그 수정
docs - 문서 수정 (README 등)
style - 코드 포맷팅 (세미콜론, 들여쓰기 등)
refactor - 리팩토링 (기능 변화 없이 코드 개선)
test - 테스트 코드 추가/수정
chore - 기타 변경사항 (빌드 설정, 패키지 매니저 등)

내 레파지토리 안의 좌측 상단 Contribute를 통해 pull request를 생성한다.
contribute 클릭 -> open pull request 클릭

commit 메시지 작성 후 create pull request를 작성하면
담당자에게 pull request 요청이 간다.
fork한 저장소는 시간이 지나면서 많은 공동 개발자들의 pull request로 인해 원본 저장소(upstream)와 내용이 달라질 수 있다.
따라서 정기적으로 동기화(sync)를 진행 해줘야 한다. 그렇지 않으면 오래된 코드로 작업하게 되어 충돌이나 오류가 발생할 수 있다.
두가지 방법이 있는데
깃 허브 내에서 버튼 클릭을 통해 쉽게 하는 방법
로컬의 터미널을 통해 귀찮게 하는 방법
둘다 똑같지만 알아두는게 좋다.

아까 위의 사진에서 Sync fork 버튼을 클릭후
git pull origin main으로 가져올 수 있다.
1. upstream 추가
git remote add upstream https://github.com/원본계정/저장소이름.git
2. upstream 최신 내용 가져오기
git fetch upstream
3. 내 로컬 main 브랜치로 이동
git checkout main
4. upstream의 main 브랜치 내용 병합
git merge upstream/main
4번을 입력하면 git은 자동으로 변합할 수 없는 부분이 없을때는 바로 커밋이 되지만
병합 메시지를 직접 작성하라고 요구할 수 도 있다.
메시지를 그대로 두고 저장하려면 ESC -> :wq 입력후 Enter하면 merge 커밋이 완료된다.
5. 내 fork 원격 저장소에 push
git push origin main
이제 열심히 sync된 코드들을 통해 개발을 다시 진행하면된다.👊