Git 분기 포인터를 다른 커밋으로 이동

John Wachira 2024년2월15일
  1. 대상 브랜치에서 체크아웃하는 동안 Git 브랜치 포인터를 다른 커밋으로 이동
  2. 대상 브랜치에서 체크아웃하지 않은 상태에서 Git 브랜치 포인터를 다른 커밋으로 이동
Git 분기 포인터를 다른 커밋으로 이동

이 기사에서는 Git 분기 포인터를 다른 커밋으로 이동하는 방법을 설명합니다. 대상 브랜치에서 체크아웃한 상태와 체크아웃하지 않은 상태에서 포인터를 이동하는 방법을 살펴보겠습니다.

더 간단한 것부터 시작합시다.

대상 브랜치에서 체크아웃하는 동안 Git 브랜치 포인터를 다른 커밋으로 이동

아래 예는 저장소의 feature 분기를 보여줍니다. 다음은 커밋 내역입니다.

커밋 히스토리

4ee91ac 커밋에서 e65841a 커밋(예: HEAD@ {2})으로 분기 포인터를 이동하려고 합니다. 어떻게 해야 할까요?

목적지인 feature 분기에서 체크아웃했으므로 아래와 같이 git reset 명령을 실행할 수 있습니다.

$ git reset --hard e65841a

출력:

HEAD is now at e65841a Update README.md

이렇게 하면 ref가 지정된 커밋으로 이동합니다. 아주 간단하죠?

다음 시나리오로 넘어갑시다.

대상 브랜치에서 체크아웃하지 않은 상태에서 Git 브랜치 포인터를 다른 커밋으로 이동

master 브랜치로 전환하겠습니다. master 브랜치에서 체크아웃하는 동안 feature 브랜치에 대한 브랜치 포인터를 어떻게 이동할 수 있습니까?

두 가지 방법을 사용할 수 있습니다. 가장 쉬운 것부터 시작하겠습니다.

git branch 명령

다음은 이 시나리오에 대한 명령의 기본 구문입니다.

$ git branch -f <branch-name> <commit-hash>

이 시나리오에서는 포인터를 afcc8bb 커밋으로 이동하려고 합니다. 어떻게 해야 할까요?

아래와 같이 git branch 명령을 사용하여 feature 분기에 대한 포인터를 이동할 수 있습니다.

$ git branch -f feature afcc8bb

포인터를 지정된 커밋으로 이동해야 합니다. 우리의 경우를 확인합시다.

git branch -f 기능

그만큼 간단합니다. 다른 방법을 확인해 봅시다.

git update-ref 명령

아래와 같이 git update-ref 명령을 사용하여 분기 포인터를 이동할 수 있습니다.

$ git update-ref -m "reset: Reset <branch-name> to <sha1-commit-hash>" refs/heads/<branch-name> <sha1-commit-hash>

포인터를 124bfa9 커밋으로 더 이동하려고 합니다. 방법은 다음과 같습니다.

먼저 master 브랜치로 다시 전환하겠습니다. 그런 다음 아래와 같이 명령을 실행합니다.

$ git update-ref -m "reset: Reset feature to 124bfa9" refs/heads/feature 124bfa9

위의 명령은 포인터를 이동하고 feature 분기에 대한 reflog에 메시지를 추가합니다. 우리의 경우를 확인합시다.

git update-ref

당신은 그것을 가지고 있습니다.

간단히 말해서 Git을 사용하면 대상 브랜치에서 체크아웃한 경우와 체크아웃하지 않은 경우 모두 브랜치 포인터를 이동할 수 있습니다. 두 시나리오에 대해 서로 다른 명령을 다루었습니다.

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