Git Pull 원본 분기가 마스터 분기를 덮어씁니다.

John Wachira 2024년2월15일
Git Pull 원본 분기가 마스터 분기를 덮어씁니다.

이 기사에서는 git pull origin <branch> 명령을 실행한 후 master 브랜치에 대한 변경 사항을 되돌리는 방법을 설명합니다. 로컬 및 원격 리포지토리에 마스터 분기와 기능 분기가 있다고 가정해 보겠습니다.

원격 feature 브랜치에서 로컬 리포지토리로 변경 사항을 가져오지만 로컬 master 브랜치에서 체크아웃되었음을 알 수 있습니다.

master 브랜치에 대한 변경 사항을 되돌리고 feature 브랜치로 변경 사항을 가져오는 방법은 무엇입니까?

Git Pull Origin <브랜치>가 마스터 브랜치를 덮어씁니다.

개념을 이해하기 위해 위에서 설명한 시나리오를 복제해 보겠습니다.

로컬 리포지토리에 없는 원격 feature 브랜치에 변경 사항이 있다고 가정하면 아래 그림과 같이 git pull 명령을 실행하여 변경 사항을 로컬 리포지토리에 통합합니다.

$ git pull origin feature

git pull origin 기능

여전히 master 브랜치에서 체크아웃되어 있지만 이상적으로는 원격 feature 브랜치에서 로컬 feature 브랜치로 변경 사항을 가져오고자 합니다. 위의 작업은 원격 브랜치에서 로컬 마스터 브랜치로 모든 커밋을 중단하고 병합 커밋을 생성합니다.

마스터 분기를 이전 상태로 되돌리고 변경 사항을 로컬 기능 분기에 통합하려면 어떻게 해야 합니까?

마스터 분기를 되돌리는 것으로 시작하겠습니다. 이 시점에서 git reset --hard 명령을 사용할 것입니다.

명령을 사용하여 두 가지 방법으로 master 분기를 재설정할 수 있습니다.

상위 커밋과 함께 git reset --hard 명령을 사용할 수 있습니다. 상위 커밋은 단순히 풀로 인해 발생한 병합 커밋 이전에 존재했던 커밋입니다.

git log --oneline 명령을 실행하고 상위 커밋의 SHA-1을 기록해 둡니다. 원격 브랜치에서 도입된 커밋을 기억하세요.

master 분기를 재설정하려면 아래 명령을 실행하십시오.

$ git reset --hard 11bd00c

이렇게 하면 마스터 분기를 끌어오기 전의 이전 상태로 재설정합니다. 또는 HEAD 참조를 사용할 수 있습니다.

이 경우 다음을 실행합니다.

$ git reset --hard HEAD~1

특히 풀이 여러 커밋을 도입하는 경우 커밋을 사용하는 것이 혼란스러울 수 있으므로 위의 명령이 가장 안전한 옵션입니다. 이제 로컬 feature 브랜치로 진행할 수 있습니다.

$ git checkout feature

우리는 git pull 명령이 git fetchgit merge FETCH_HEAD 명령을 결합한다는 것을 알고 있습니다. 즉, 원격 feature 브랜치의 변경 사항이 이미 있지만 feature 브랜치에 아직 병합되지 않았습니다.

git pull origin feature 명령을 다시 실행할 필요가 없습니다. 대신 아래 그림과 같이 변경 사항을 병합할 수 있습니다.

$ git merge FETCH_HEAD

이렇게 하면 로컬 feature 분기가 원격 feature 분기와 일치하도록 업데이트됩니다.

결론적으로 git pull origin <branch> 명령이 실수로 master 브랜치를 업데이트하는 경우 위에서 설명한 대로 변경 사항을 되돌리고 올바른 브랜치로 이동할 수 있습니다. 위의 방법은 모든 지점에 적용됩니다.

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