Dev/VCS

Git 협업 방법 clone, fork

dragonhyeon 2024. 12. 17. 18:10
728x90
반응형

git clone

저장소 (Repository) 구성원인 경우 원본 저장소를 clone 해서 바로 작업을 진행할 수 있습니다.

git clone https://github.com/dragonHyeon/some-repository.git  # 원격 저장소 clone
cd some-repository                                            # clone 한 저장소의 디렉터리로 이동

 

git clone 시 원격 저장소의 모든 브랜치, 커밋, 심볼릭 레퍼런스 (origin/HEAD), 태그를 가져옵니다. 기존 작업 디렉터리에서 일부 브랜치 추가를 하는 경우가 아니라면 수동으로 fetch 를 하여 특정 브랜치의 업데이트 정보만을 가져오기 보다는 git clone 을 사용하는것이 더 효율적입니다.

저장소 fork

저장소 (Repository) 의 구성원이 아닌 경우 해당 원격 저장소로 push 할 수 없고 따라서 PR 을 보낼수도 없습니다. 이러한 경우에는 해당 저장소를 자신의 원격 저장소로 fork 해와서 작업을 진행해야 합니다. 로컬에서의 작업 내용을 fork 한 원격 저장소에 push 하고 fork 한 원격 저장소에서 원본 원격 저장소로 PR 을 보냅니다. 저장소를 fork 한 이후의 절차는 다음과 같습니다.

git clone https://github.com/dragonHyeon/sample-repository.git                # fork 한 저장소 clone
cd sample-repository                                                          # clone 한 저장소의 디렉터리로 이동
git remote add upstream https://github.com/otherUser/original-repository.git  # 원본 저장소 추가
git fetch upstream                                                            # 원본 저장소 최신 상태 업데이트
git switch develop                                                            # 작업 하려는 브랜치로 이동
git merge upstream/develop                                                    # 원본 저장소의 원격 추적 브랜치와 병합
git --set-upstream-to=upstream/develop develop                                # 해당 로컬 브랜치를 원본 저장소의 원격 추적 브랜치와 연결

 

fork 저장소를 origin 으로 자동 설정하기 위해 fork 저장소에서 clone 을 해오지만, 원본 저장소의 최신 상태를 유지하기 위해 원본 저장소를 upstream 으로 추가하고, 원격 브랜치의 최신 정보를 fetch 한 뒤 원본 저장소의 브랜치와 동기화합니다. 이렇게 하면 fork 저장소를 기본 원격 (origin) 으로 설정하면서도, 원본 저장소 (upstream) 의 변경 사항을 지속적으로 반영할 수 있습니다.

원격 저장소의 이름 (remote alias) 는 clone 한 저장소는 자동으로 origin 으로 설정되며, fork 해온 저장소의 원본 원격 저장소는 upstream 으로 명명하는것이 일반적입니다.
git remote -v 를 통해 원격 저장소의 이름과 해당 URL 을 확인할 수 있습니다.
728x90
반응형

'Dev > VCS' 카테고리의 다른 글

Git rebase, squash  (1) 2024.12.27
Git fast-forward merge, 3-way merge  (0) 2024.12.24
Git 원격 브랜치, 원격 추적 브랜치, 트래킹 브랜치  (4) 2024.12.17
Git 스테이징 영역  (2) 2024.12.13
git pull vs git fetch  (2) 2024.12.13