IT's Jenna

CH 4. 둘 이상의 원격 저장소로 협업하기 본문

Git/팀 개발을 위한 Git, GitHub 시작하기

CH 4. 둘 이상의 원격 저장소로 협업하기

developer Jenna 2024. 8. 5. 07:21

포크(Fork)

정의

포크는 다른 리포지토리의 프로젝트 전체(여러 브랜치를 포함한 모든 커밋 이력)를 복사해서 가져오는 것입니다. 기존 리포지토리에 변경 사항을 병합하려면 포크한 리포지토리에서 pull request를 원본 리포지토리로 보냅니다.

 

아래 그림은 브랜치를 추가하는것과 리포지토리를 추가하여 포크한 것과의 차이를 보여줍니다.


여러 개의 원격 저장소(repository) 연결

원본 저장소를 포크하여 새로운 저장소를 만든 후 작업을 하면 원본 저장소에서 작업한 히스토리 내역은 알 수 없다.

아래 그림처럼 히스토리 내역이 갈라지게 되는데 이때 포크한 저장소에서 원본 저장소의 히스토리도 함께 보고 싶다면 여러개의 원격 저장소를 연결하여 확인해야 한다.

명령어

원격 저장소 추가: git remote add upstream git@github.com:깃헙아이디/레파지토리이름.git

Push하기

명령어

  1. 파일 추가 및 커밋
    • git add .
    • git commit -m "메시지"
  2. Push 명령어
    • origin에 푸시: git push origin 브랜치1
    • upstream에 푸시: git push upstream 브랜치2 (repository의 닉네임을 upstream이라 지정했기 때문)

리베이스(Rebase)

정의

리베이스는 커밋의 베이스를 다른 곳으로 붙이는 것입니다. 이를 통해 커밋 히스토리를 더 깔끔하게 유지할 수 있습니다.

리베이스 명령어

  1. 브랜치 이동: git checkout feature (작업한 브랜치로 이동)
  2. 리베이스: git rebase main (작업한 브랜치를 main 브랜치의 최신 커밋 뒤로 붙임)

강제 Push

리베이스는 이력을 조작하는 행위이기 때문에 일반 푸시로는 수행할 수 없으며, 강제 푸시가 필요합니다. 다른 사람들과 사용하는 브랜치가 아닌 혼자 작업하는 브랜치에 강제 푸시를 실행해야 합니다.

강제 Push 명령어

git push --force

 

Comments