Git의 특정 커밋으로 리베이스
이 문서에서는 Git에서 특정 커밋으로 리베이스하는 프로세스에 대해 설명합니다. 이를 달성하는 방법을 설명하기 위해 몇 가지 시나리오를 사용할 것입니다.
git rebase --onto
명령을 사용하여 분기를 특정 커밋으로 리베이스합니다. 바로 뛰어들자.
Git의 특정 커밋으로 리베이스
분기를 다른 분기로 리베이스하고 커밋을 지정해야 할 때 --onto
플래그를 사용합니다.
기본 구문:
git rebase –onto <new-parent> <old-parent> <head-of-new-parent>
예제 시나리오를 살펴보겠습니다.
사용할 기본 워크플로우는 다음과 같습니다.
new-feature
를 main
의 특정 커밋으로 리베이스
첫 번째 시나리오에서는 전체 분기를 리베이스하지 않고 main
에서 커밋을 사용하려고 한다고 가정합니다. 이를 위해서는 실행 중인 커밋의 SHA-1
을 기록해야 합니다.
git log <branch-name>
을 사용하여 커밋에 대한 해시를 얻을 수 있습니다.
우리의 경우 new-feature
분기의 커밋을 846e2fa
커밋(마지막 두 번째)의 main
분기로 이동하려고 합니다. 우리는 다음을 실행할 것입니다:
$ git rebase –onto 846e2fa bd9172c
위의 명령은 아래와 같은 효과를 갖습니다.
전체 new-feature
를 이동하려고 했으므로 명령에 세 번째 인수가 필요하지 않습니다. Git은 세 번째 인수를 생략하면 기본적으로 전체 분기를 이동합니다.
new-feature
를 main
의 특정 커밋으로 리베이스하고 new-feature
에서 첫 번째 커밋을 제거합니다.
e2ff2bc
가 종속성이라고 가정하고 커밋 846e2fa
에서 분기를 main
으로 이동하려고 합니다. 이는 우리가 가진 것과 동일한 종속성입니다. 평범한 영어로, 우리는 846e2fa
에서 new-feature
를 main
으로 리베이스하고 new-feature
에서 첫 번째 커밋을 생략하려고 합니다.
방법은 다음과 같습니다.
$ git rebase –onto 846e2fa e2ff2bc
위의 명령은 아래와 같은 효과를 갖습니다.
git rebase -onto
명령은 상위 커밋을 참조로 사용합니다. 간단히 말해서 저장하려는 커밋 전에 커밋을 참조해야 합니다.
new-feature
를 main
의 특정 커밋으로 리베이스하고 new-feature
에서 마지막 커밋을 제거합니다.
new-feature
를 846e2fa
로 이동하고 new-feature
에서 d7dbeb
커밋을 생략하고 싶다고 가정해 보겠습니다. 어떻게 해야 할까요?
이것이 세 번째 인수가 들어오는 곳입니다. 다음을 실행합니다.
$ git rebase –onto 846e2fa bd9172c 730f163
결과는 다음과 같습니다.
세 번째 인수는 새 상위 커밋의 HEAD
만 가리킵니다. 우리의 경우 730f163
이 있습니다. 이렇게 하면 커밋과 그 이후의 모든 커밋이 삭제됩니다.
간단히 말해서 Git을 사용하면 분기를 특정 커밋으로 리베이스할 수 있습니다. git rebase -onto
명령은 리베이스할 때 세 개의 인수를 허용합니다.
세 번째 인수가 새로운 상위 커밋을 지시한다는 점을 항상 기억하십시오.
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