Git의 특정 커밋으로 리베이스

John Wachira 2024년2월15일
Git의 특정 커밋으로 리베이스

이 문서에서는 Git에서 특정 커밋으로 리베이스하는 프로세스에 대해 설명합니다. 이를 달성하는 방법을 설명하기 위해 몇 가지 시나리오를 사용할 것입니다.

git rebase --onto 명령을 사용하여 분기를 특정 커밋으로 리베이스합니다. 바로 뛰어들자.

Git의 특정 커밋으로 리베이스

분기를 다른 분기로 리베이스하고 커밋을 지정해야 할 때 --onto 플래그를 사용합니다.

기본 구문:

git rebase –onto <new-parent> <old-parent> <head-of-new-parent>

예제 시나리오를 살펴보겠습니다.

사용할 기본 워크플로우는 다음과 같습니다.

이전 커밋으로 Git 리베이스 - 기본 워크플로

new-featuremain의 특정 커밋으로 리베이스

첫 번째 시나리오에서는 전체 분기를 리베이스하지 않고 main에서 커밋을 사용하려고 한다고 가정합니다. 이를 위해서는 실행 중인 커밋의 SHA-1을 기록해야 합니다.

git log <branch-name>을 사용하여 커밋에 대한 해시를 얻을 수 있습니다.

특정 커밋으로 Git 리베이스 - 워크플로

우리의 경우 new-feature 분기의 커밋을 846e2fa 커밋(마지막 두 번째)의 main 분기로 이동하려고 합니다. 우리는 다음을 실행할 것입니다:

$ git rebase –onto 846e2fa bd9172c

위의 명령은 아래와 같은 효과를 갖습니다.

특정 커밋으로 Git 리베이스 - 출력

전체 new-feature를 이동하려고 했으므로 명령에 세 번째 인수가 필요하지 않습니다. Git은 세 번째 인수를 생략하면 기본적으로 전체 분기를 이동합니다.

new-featuremain의 특정 커밋으로 리베이스하고 new-feature에서 첫 번째 커밋을 제거합니다.

e2ff2bc가 종속성이라고 가정하고 커밋 846e2fa에서 분기를 main으로 이동하려고 합니다. 이는 우리가 가진 것과 동일한 종속성입니다. 평범한 영어로, 우리는 846e2fa에서 new-featuremain으로 리베이스하고 new-feature에서 첫 번째 커밋을 생략하려고 합니다.

Git을 특정 커밋으로 리베이스하고 첫 번째 커밋 제거 - 워크플로

방법은 다음과 같습니다.

$ git rebase –onto 846e2fa e2ff2bc

위의 명령은 아래와 같은 효과를 갖습니다.

Git을 특정 커밋으로 리베이스하고 첫 번째 커밋 제거 - 출력

git rebase -onto 명령은 상위 커밋을 참조로 사용합니다. 간단히 말해서 저장하려는 커밋 전에 커밋을 참조해야 합니다.

new-featuremain의 특정 커밋으로 리베이스하고 new-feature에서 마지막 커밋을 제거합니다.

new-feature846e2fa로 이동하고 new-feature에서 d7dbeb 커밋을 생략하고 싶다고 가정해 보겠습니다. 어떻게 해야 할까요?

Git을 특정 커밋으로 리베이스하고 마지막 커밋 제거 - 워크플로

이것이 세 번째 인수가 들어오는 곳입니다. 다음을 실행합니다.

$ git rebase –onto 846e2fa bd9172c 730f163

결과는 다음과 같습니다.

Git을 특정 커밋으로 리베이스하고 마지막 커밋 제거 - 출력

세 번째 인수는 새 상위 커밋의 HEAD만 가리킵니다. 우리의 경우 730f163이 있습니다. 이렇게 하면 커밋과 그 이후의 모든 커밋이 삭제됩니다.

간단히 말해서 Git을 사용하면 분기를 특정 커밋으로 리베이스할 수 있습니다. git rebase -onto 명령은 리베이스할 때 세 개의 인수를 허용합니다.

세 번째 인수가 새로운 상위 커밋을 지시한다는 점을 항상 기억하십시오.

작가: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

관련 문장 - Git Rebase