>  기사  >  git rebase를 사용하여 Git에서 브랜치를 병합하는 방법

git rebase를 사용하여 Git에서 브랜치를 병합하는 방법

anonymity
anonymity원래의
2019-04-27 15:20:237930검색

리베이스란 무엇인가요? 리베이스 명령을 사용하는 방법은 무엇입니까? git rebase 명령을 어떻게 사용하는지 알아봅시다.

Git에서 서로 다른 브랜치의 변경 사항을 통합하는 두 가지 주요 방법, 즉 병합과 리베이스가 있다는 것을 알고 있습니다. 실제로 git rebase와 git merge는 동일한 작업을 수행합니다. 둘 다 한 브랜치에서 다른 브랜치로 변경 사항을 병합하도록 설계되었지만 방식이 약간 다릅니다.

merge 명령 예

git checkout feature
git merge master

이런 식으로 기능 브랜치의 새로운 병합 커밋은 두 브랜치의 기록을 함께 연결합니다

Merge 다행히도 안전한 작업입니다. 기존 브랜치는 변경되지 않습니다.

기능 브랜치는 업스트림 변경 사항이 병합될 때마다 외부 병합 커밋을 도입합니다. 업스트림 브랜치가 매우 활동적이면 브랜치 기록이 어느 정도 오염됩니다.

Rebase 명령 예

git checkout feature
git rebase master

전체 기능 브랜치를 마스터 브랜치 뒤로 이동하여 모든 마스터 브랜치를 새 브랜치에 효과적으로 배치합니다.

그러나 rebase는 원래 브랜치의 각 커밋에 대해 새 커밋을 생성하고 프로젝트 기록을 다시 작성하며 병합된 커밋을 가져오지 않습니다.

두 개의 브랜치를 리베이스할 때 생성된 "재생"을 대상 브랜치에 적용할 필요는 없으며 적용을 위해 다른 브랜치를 지정할 수도 있습니다. 기능 브랜치 서버를 생성하고, 서버에 일부 기능을 추가하고, C3 및 C4를 제출했습니다. 그런 다음 C3에서 기능 브랜치 클라이언트를 생성하고 클라이언트에 일부 기능을 추가한 다음 C8 및 C9를 제출했습니다. 마지막으로 서버 브랜치로 돌아가서 C10을 다시 커밋합니다.

git rebase를 사용하여 Git에서 브랜치를 병합하는 방법

클라이언트의 변경 사항을 메인 브랜치에 병합하고 게시하고 싶지만 서버의 변경 사항은 아직 더 포괄적으로 테스트해야 하기 때문에 당분간 병합하고 싶지 않다고 가정해 보겠습니다. . 이때 git rebase 명령의 --onto 옵션을 사용하여 클라이언트 브랜치에서는 수정 사항을 선택하지만 서버 브랜치(예: C8 및 C9)에서는 수정 사항을 선택하고 마스터 브랜치에서 재생할 수 있습니다.

$ git rebase --onto master server client

The 위 명령의 의미는 다음과 같습니다. "클라이언트 브랜치를 꺼내고 클라이언트 브랜치와 서버 브랜치의 공통 조상 이후의 변경 사항을 찾은 다음 마스터 브랜치에서 재생합니다." 이해하기가 조금 복잡하지만 효과는 매우 멋집니다.

git rebase를 사용하여 Git에서 브랜치를 병합하는 방법

이제 병합 마스터 브랜치를 빨리 감을 수 있습니다.

$ git checkout master
$ git merge client

git rebase를 사용하여 Git에서 브랜치를 병합하는 방법

다음으로 서버 브랜치에 변경 사항을 통합하기로 결정합니다. git rebase [basebranch] [topicbranch] 명령을 사용하여 기능 브랜치(예: 이 예에서는 서버)를 대상 브랜치(예: 마스터)로 직접 리베이스합니다. 이렇게 하면 서버 분기로 전환한 다음 rebase 명령을 실행하는 여러 단계가 절약됩니다.

interesting-rebase-4 (1).png

$ git rebase master server

개발 중 리베이스 사용 시나리오

리베이스는 팀의 Git 워크플로우에 어느 정도 적용될 수 있습니다.

로컬 정리

가끔 대화형 리베이스를 실행하면 모든 커밋을 보장할 수 있습니다. 기능 분기는 집중적이고 의미가 있습니다. 코드를 작성할 때 고아 커밋 생성에 대해 걱정할 필요가 없습니다. 나중에 확실히 수정할 수 있기 때문입니다.

다음 명령은 최신 3개의 커밋을 대화형으로 리베이스합니다.

git checkout feature
git rebase -i HEAD~3

실제로 브랜치를 이동하는 것이 아니라 이동만 하면 됩니다. 다음 3개의 커밋이 병합됩니다.

Interactive rebase는 로컬 브랜치에만 영향을 미치기 때문에 git rebase를 워크플로에 도입하는 좋은 방법입니다. 다른 개발자는 자신이 수행한 작업의 결과만 볼 수 있는데, 이는 매우 깔끔하고 추적하기 쉬운 분기 기록입니다.

하지만 이것도 개인 지점에서만 사용할 수 있습니다. 동일한 기능 분기에서 다른 개발자와 함께 작업하는 경우 해당 분기는 공개되며 기록을 다시 쓸 수 없습니다.

위 내용은 git rebase를 사용하여 Git에서 브랜치를 병합하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.