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 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을 사용하면 대상 브랜치에서 체크아웃한 경우와 체크아웃하지 않은 경우 모두 브랜치 포인터를 이동할 수 있습니다. 두 시나리오에 대해 서로 다른 명령을 다루었습니다.
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