Git의 원격 리포지토리 브랜치에서 변경 사항을 가져올 때 로컬 브랜치 리베이스
이 튜토리얼에서는 Git의 원격 저장소 브랜치에서 변경 사항을 가져올 때 로컬 브랜치를 리베이스하는 방법을 소개합니다.
우리는 버전 제어 시스템인 Git을 사용하여 파일에 대한 변경 사항을 추적합니다. 로컬 저장소의 로컬 분기에서 변경 사항을 커밋합니다. 이 로컬 분기는 원격 저장소의 원격 분기와 연결됩니다.
때때로 원격 저장소의 변경 사항을 로컬 저장소에 있는 변경 사항과 동기화합니다. 원격 브랜치에서 로컬 브랜치로 변경 사항을 가져옵니다.
원격 브랜치 변경 사항을 가져올 때 로컬 브랜치(즉)를 리베이스하여 게시된 변경 사항 위에 게시되지 않은 변경 사항을 다시 적용할 수 있습니다.
이제 이를 예를 들어 설명하겠습니다.
Git의 원격 저장소 분기에서 가져올 때 git pull --rebase
를 사용하여 로컬 분기 리베이스
협업 개발 환경에서 Git을 사용하여 로컬 시스템의 로컬 리포지토리에 분기를 만듭니다. 이 로컬 분기를 원격 저장소의 원격 분기와 연결합니다.
로컬 브랜치의 파일에 수행된 변경 사항을 준비하고 커밋합니다. 그런 다음 이러한 변경 사항을 원격 저장소의 원격 분기에 게시합니다.
그런 다음 동일한 리포지토리로 작업하는 다른 팀 구성원이 시스템의 로컬 분기에 게시된 변경 사항을 가져옵니다.
따라서 주기적으로 로컬 변경 사항을 원격 저장소로 푸시하고 원격 저장소에서 게시된 변경 사항을 가져오는 이 프로세스를 수행합니다.
원격 브랜치의 게시된 변경 사항을 로컬 브랜치로 가져올 때 병합을 수행하거나 리베이스를 수행하는 옵션이 있습니다.
병합의 경우 기본 옵션인 git pull --merge
명령을 사용합니다. 병합 사례에서 원격 저장소 변경 사항을 가져오면 로컬 변경 사항이 원격 변경 사항과 병합됩니다.
최신 로컬 및 원격 커밋을 가리키도록 병합 커밋이 생성됩니다.
리베이스의 경우 git pull --rebase
명령을 사용합니다. rebase에서 로컬 분기의 게시되지 않은 로컬 변경 사항은 원격 리포지토리의 게시된 변경 사항 위에 다시 적용됩니다.
rebase 케이스에서는 새로운 커밋이 생성되지 않습니다.
원격 리포지토리에 동일한 이름을 가진 원격 브랜치와 연결된 로컬 리포지토리에 feature
라는 브랜치가 있다고 가정합니다.
팀의 각 개발자는 로컬 시스템에 feature
로컬 분기를 갖게 됩니다.
한 개발자가 로컬 브랜치 feature
에 몇 가지 변경 사항을 커밋했다고 가정합니다.
이제 다른 개발자가 원격 저장소의 원격 분기 feature
에 대한 일부 변경 사항을 게시했다고 가정합니다.
따라서 이제 분기의 상황은 아래 그림과 같이 보입니다.
P---Q---R feature (local branch)
/
A---B---C---D---E---G feature (remote branch)
위의 그림에서 볼 수 있듯이 이제 포크된 히스토리가 있습니다. 게시된 변경 사항을 가져오려면 원격 분기에서 로컬 분기로 변경 사항을 가져와야 합니다.
원격 브랜치 feature
의 새 커밋이 로컬 브랜치의 커밋과 관련이 있다고 가정합니다(일반적으로 그렇습니다). 따라서 이 경우 pull을 수행할 때 병합 대신 rebase를 수행합니다.
리베이스를 수행하려면 --rebase
옵션과 함께 git pull
명령을 실행해야 합니다. 명령 구문은 git pull --rebase <remote-repository> <remote-branch-name>
입니다.
따라서 우리의 경우 로컬 브랜치 feature
를 리베이스하려면 다음과 같이 합니다.
$ git pull --rebase origin feature
따라서 위의 git pull
명령을 실행한 후 분기는 아래 그림과 같이 보입니다.
P---Q---R feature (local branch)
/
A---B---C---D---E---G feature (remote branch)
따라서 그림과 같이 로컬 브랜치 feature
의 게시되지 않은 모든 커밋은 원격 브랜치 feature
변경 사항의 끝으로 이동됩니다. 새 커밋이 생성되지 않습니다.
rebase 옵션의 가장 큰 장점은 프로젝트 기록이 병합 옵션보다 훨씬 깨끗하다는 것입니다.
또한 위의 그림과 같이 선형 프로젝트 이력을 얻습니다. 포크가 없습니다. git log
명령을 사용하여 프로젝트 기록을 쉽게 탐색할 수 있습니다.
따라서 Git의 원격 리포지토리에서 변경 사항을 가져올 때 로컬 브랜치를 rebase하는 방법에 대해 자세히 설명했습니다.
자세한 내용은 다음을 방문하십시오 -
관련 문장 - Git Pull
- Git Merge Origin/Master와 Git Pull의 차이점
- Git Pull 원본 분기가 마스터 분기를 덮어씁니다.
- Git Pull이 모든 것을 당기지 않음
- Git 클론 업데이트
- Git 풀 실행 취소
- GitHub에서 저장소 포크