> 개발 도구 > 자식 > 본문

git rebase는 무엇을 의미합니까?

青灯夜游
풀어 주다: 2021-12-29 17:04:36
원래의
11574명이 탐색했습니다.

git rebase의 의미: 브랜치의 저장소 상태를 재정의합니다. 리베이스 작업을 수행할 때 git은 두 브랜치의 공통 조상부터 리베이스할 브랜치의 수정 사항을 추출한 다음 리베이스할 브랜치를 가리킵니다. 기본 브랜치 기본 브랜치의 최신 커밋, 마지막으로 방금 추출한 변경 사항을 기본 브랜치의 최신 커밋 뒤에 적용합니다.

git rebase는 무엇을 의미합니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, Git 버전 2.30.0, Dell G3 컴퓨터.

Git rebase는 이름에서 알 수 있듯이 시작점(베이스)의 역할, 즉 브랜치의 저장소 상태를 재정의하는 것입니다.

1. 제출 노드 다이어그램

먼저 간단한 제출 노드 다이어그램을 통해 리베이스가 무엇을 하는지 느껴봅시다

마스터와 기능 두 가지 브랜치, 여기서 기능은 제출 지점 B의 마스터에서 가져온 브랜치입니다

두 개가 있습니다. master 브랜치에 새로운 커밋 M, 그리고 feature

git rebase는 무엇을 의미합니까?
에 두 개의 새로운 커밋 C와 D가 있습니다. 이때 기능 브랜치로 전환하고 다음 명령을 실행합니다. 이는 마스터 브랜치를 기능 브랜치에 병합하는 것과 동일합니다

git checkout feature
git rebase master

//这两条命令等价于git rebase master feature
로그인 후 복사

아래 그림은 리베이스를 보여줍니다. 최종 제출 노드 다이어그램은 작동 방식을 설명합니다.

git rebase는 무엇을 의미합니까?

  • feature: 변경할 기본 브랜치, 현재 브랜치
  • master: 기본 브랜치, 대상 브랜치

공식 설명: 수행할 때 리베이스 작업을 수행하면 git은 두 브랜치의 공통 조상에서 시작하여 변경할 브랜치의 수정 사항을 추출한 다음 변경할 브랜치를 기본 브랜치의 최신 커밋으로 지정하고 마지막으로 방금 추출한 수정 사항을 적용합니다. 기본 브랜치의 최신 커밋 뒷면.

예를 통한 설명: 기능 브랜치에서 git rebase master를 실행하면 git은 master와 featuer의 공통 조상 B부터 시작하여 기능 브랜치의 수정 사항을 추출합니다. 즉, 두 커밋 C와 D가 먼저 추출됩니다. 그런 다음 기능 분기를 마스터 분기의 최신 커밋인 M으로 지정합니다. 마지막으로 추출된 C, D가 M에 연결되는데 이 과정은 원본 C, D를 삭제하고 새로운 C', D'를 생성하는 과정으로, 제출 내용은 동일하지만 커밋 ID가 다릅니다. 특징은 자연스럽게 결국 D'를 가리킵니다.

잘 알려진 설명(중요!): 리베이스는 베이스를 변경하는 것으로 직접적으로 이해될 수 있습니다. 기능 브랜치는 마스터 브랜치의 B에서 가져온 브랜치이며 기능의 기본은 B입니다. 그리고 마스터가 B 이후에 새 커밋을 갖는 경우 마스터의 새 커밋을 기능 분기의 새 기반으로 사용하는 것과 같습니다. 실제 작업은 B 이후의 기능 제출을 저장한 다음 원래 제출을 삭제하고 마스터의 최신 제출 위치를 찾은 다음 저장된 제출(새 커밋 ID가 있는 새 노드)을 연결하여 기본 제출을 수행하는 것입니다. 기능 분기는 원래 B 대신 Yu가 M이 되었습니다.

또한 매우 간단한 설명이 있습니다. rebase 명령의 핵심은 실제로 "기본"을 이해하는 것입니다. git rebase ) 그런 다음 "기본 브랜치"의 최신 제출 지점 이후에 차등 제출을 하나씩 다시 제출하고 마지막으로 현재 브랜치의 HEAD 포인터가 최신 제출 지점을 가리킵니다


2. 실제 git 제출 예

제출 레코드는 위 다이어그램에 따라 다음과 같이 구성됩니다. 그림에 표시된 대로: (ABM은 마스터 분기선이고 ABCD는 기능 분기선입니다. 여기서 마스터는 색상을 변경하고 분기합니다. 이는 이해에 영향을 미치지 않습니다. 단지 두 개의 브랜치와 두 개의 라인을 의미한다는 것을 알아두세요!)

git rebase는 무엇을 의미합니까?
이것은 기능 브랜치에서 git rebase master를 실행할 때

리베이스가 완료된 후 ABCD가 원래 기능 브랜치 라인이고 ABMC'D'가 새로운 기능 브랜치입니다. 라인이고 ABM은 마스터 브랜치 라인입니다(변경 없음)

git rebase는 무엇을 의미합니까?


3. 권장 사용 시나리오

할 일이 너무 많지만 사실 이것이 가장 중요합니다. 회사마다, 상황마다 사용 시나리오가 다르지만 대부분의 경우 권장 사항은 다음과 같습니다.

  • 공용 브랜치에서 최신 코드, 즉 git pull -r 또는 git pull --rebase를 가져올 때 rebase를 사용하세요. 하지만 리베이스하는 단점이 있습니다. 이제부터는 베이스가 변경되었기 때문에 현재 브랜치가 어느 브랜치에서 처음으로 당겨졌는지 알 수 없게 됩니다. (merge를 사용하면 "Merge... to..."라는 의미 없는 커밋 기록이 남게 됩니다.)

  • 퍼블릭 브랜치에 코드를 병합할 때는 merge를 사용하세요. (리베이스를 사용하면 다른 개발자가 메인 브랜치의 히스토리를 보고 싶어도 원래 히스토리가 아닐 것입니다. 히스토리는 귀하에 의해 조작되었습니다.)

추천 학습: "Git Tutorial"

위 내용은 git rebase는 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿