명령줄에서 Git Rebase 사용

John Wachira 2024년2월15일
명령줄에서 Git Rebase 사용

이 기사에서는 git rebase 명령을 효과적으로 사용하는 방법에 대해 설명합니다. git rebase 명령을 사용하면 일련의 커밋을 변경하고 리포지토리에서 커밋 기록을 수정할 수 있습니다.

git rebase 명령을 사용하여 커밋을 편집, 재정렬 또는 스쿼시할 수 있습니다.

명령줄에서 git rebase 사용

다음은 몇 가지 일반적인 사용 옵션입니다.

  1. 이전 커밋 메시지를 편집할 수 있습니다.
  2. 둘 이상의 커밋을 하나로 결합할 수 있습니다.
  3. 저장소에서 불필요한 커밋을 되돌리거나 삭제할 수 있습니다.

리베이스할 때 브랜치 또는 리포지토리의 특정 시점에 대해 리베이스할 수 있습니다.

분기에 대해 리베이스하려면 다음을 실행합니다.

$ git rebase --interactive <branch_name>

특정 시점에 대해 리베이스하기 위해 다음을 실행합니다.

$ git rebase --interacive HEAD~

HEAD~7을 추가하여 7번째 커밋까지 리베이스할 수 있습니다.

리베이스하는 동안 사용 가능한 명령을 살펴보겠습니다.

  1. pick - 커밋 기록을 재정렬하는 데 사용합니다.
  2. reword - 커밋 메시지를 변경하고 싶을 때 사용합니다. 커밋에 의해 도입된 변경 사항에는 영향을 미치지 않습니다.
  3. 편집 - 커밋을 수정하거나 수정할 때 사용합니다. 커밋을 더 작은 커밋으로 분할하거나 커밋으로 인해 발생한 오류를 제거할 수 있습니다.
  4. 스쿼시 - 두 커밋을 하나로 결합하고 새 커밋에 새 메시지를 줄 수 있는 기회를 주기 위해 사용합니다.
  5. fixup - 병합된 커밋에 대한 메시지를 버리고 그 위에 있는 메시지를 사용한다는 점을 제외하면 squash와 동일합니다.

이제 예제에서 위의 옵션을 사용하려고 시도합니다. 이 예에서는 Delftscopetech 리포지토리의 특정 시점에 대해 리베이스합니다.

HEAD~7을 리베이스합니다. 우리는 실행:

$ git rebase --interactive HEAD~7

텍스트 편집기는 아래 출력을 보여줍니다.

7번째 커밋까지 git rebase

우리의 커밋은 가장 오래된 것부터 최신 것까지 정렬됩니다.

텍스트 편집기에서 다음을 수행합니다.

  1. squash를 사용하여 커밋(fa39187)을 커밋(1fc6c95)에 스쿼시합니다.
  2. 마지막 커밋(7b36971)을 커밋(6b2481b) 이전으로 이동하고 pick으로 유지합니다.
  3. 커밋(c619268)을 커밋(6b2481b)에 병합하고 fixup을 사용하여 커밋 메시지를 삭제합니다.
  4. edit를 사용하여 분할(dd1475d)합니다.
  5. reword를 사용하여 커밋 메시지(4ca2acc)를 수정합니다.

아래와 같이 텍스트 편집기에서 명령을 수정합니다.

텍스트 편집기 수정

텍스트 편집기를 저장하고 닫으면 Git이 리베이스를 시작합니다.

Git은 pick 1fc6c95를 건너뛰고 squash에 약간의 입력이 필요하므로 편집기를 엽니다. 이렇게 보일 것입니다.

Git 열기 편집기 - squash

변경 사항에 만족하면 편집기를 닫고 리베이스를 계속할 수 있습니다. 다음 세 명령은 입력이 필요하지 않지만 edit는 아래 메시지를 입력하고 터미널에 인쇄합니다.

Git 열기 편집기 - 편집

이 시점에서 git commit --amend 명령을 사용하여 변경하고 새 커밋을 만들 수 있습니다. 완료되면 git rebase --continue 명령을 실행하여 진행할 수 있습니다.

변경 후에는 항상 git rebase --continue를 실행하십시오. 명령 실행을 잊고 코딩을 계속하면 나중에 리베이스할 수 없습니다.

그러나 다음과 같이 해결할 수 있습니다.

  1. 상위에 대한 HEAD ref에 git reset --soft HEAD^ 명령을 실행합니다.
  2. git rebase --continue를 실행하여 리베이스를 완료합니다.

git rebase --abort 명령을 실행하여 리베이스를 중단하고 프로세스를 다시 실행할 수도 있습니다. 병합 충돌을 다시 해결해야 합니다.

reword 부분에는 입력이 필요하며 Git은 아래 정보와 함께 텍스트 편집기를 엽니다.

Git 열기 편집기 - reword

텍스트를 변경하고 파일을 저장하고 리베이스를 완료할 수 있습니다.

간단히 말해서 git rebase 명령을 사용하면 커밋 측면에서 리포지토리 상태를 변경할 수 있습니다. 커밋을 스쿼시, 이름 변경 또는 재정렬할 수 있습니다.

리베이스하는 동안 충돌을 병합할 때 주의하십시오.

작가: 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