Git Merge Origin/Master와 Git Pull의 차이점

John Wachira 2024년2월15일
Git Merge Origin/Master와 Git Pull의 차이점

이 기사에서는 git merge origin/mastergit pull 명령의 차이점에 대해 설명합니다. 두 명령은 원격 저장소의 변경 사항을 현재 로컬 분기에 통합합니다.

그러나 곧 설명하겠지만 각 명령은 고유하게 작동하며 사용 사례가 다릅니다. Git을 처음 사용하고 두 명령으로 어려움을 겪고 있는 경우 여기가 적합합니다.

git merge origin/mastergit pull의 차이점

주요 차이점을 도출하기 위해 각 명령을 분석하는 것으로 시작합니다. git pull 명령부터 시작하겠습니다.

git pull 명령

Git 설명서에 따르면 기본적으로 git pull 명령은 두 명령의 조합입니다.

  1. git fetch 명령
  2. git merge Fetch_Head 명령

git push 명령은 원격 저장소에서 변경 사항을 가져오고 git merge 명령을 호출하여 Fetch_Head를 체크아웃된 로컬 분기에 병합합니다.

간단히 말해서 Fetch_Head는 가져온 항목을 추적하는 참조입니다. 모든 원격 분기 끝에 커밋을 저장합니다.

git pull 명령을 사용하려면 로컬 분기에 원격 추적 분기가 있어야 합니다. 원격 추적 브랜치는 로컬 브랜치가 변경 사항을 가져오고 푸시하는 원격 저장소의 브랜치입니다.

로컬 브랜치에 대한 원격 추적 브랜치를 설정하지 않은 경우 git pull 명령 자체가 실패합니다. 이러한 상황에서는 원격 분기를 지정해야 합니다.

git merge origin/master 명령

git merge origin/master는 원격 master 브랜치에서 현재 브랜치로의 변경 사항을 통합합니다. 그 자체로 git merge origin/master 명령은 로컬 브랜치에 영향을 주지 않습니다.

로컬 저장소는 원격 저장소의 변경 사항을 인식하지 못하므로 먼저 git fetch 명령을 실행해야 합니다.

git fetch 명령과 함께 git merge origin/master 명령은 git pull 명령처럼 작동합니다. 그러나 원격 추적 분기가 필요하지 않습니다.

다음과 같은 가상 시나리오를 생각해 보십시오.

저장소에는 master 분기가 있습니다. 우리는 development 분기를 생성하여 편집하고 master에 병합하고 원격 저장소로 푸시합니다.

동일한 프로젝트에서 작업하는 다른 개발자는 동일한 워크플로를 따릅니다.

원격 master 분기에 새로운 변경 사항이 있으며 master 분기를 업데이트하지 않고 development 분기에 직접 변경 사항을 가져오고 싶습니다. 어떻게 해야 할까요?

로컬 development 분기에는 원격 추적 분기가 없기 때문에 git pull 명령이 작동하지 않습니다.

원격 저장소에서 변경 사항을 가져와 development 브랜치에 직접 병합해야 합니다. 여기에서 git merge origin/master 명령이 사용됩니다.

원격에서 가져오려면 다음을 실행합니다.

$ git fetch

git 가져오기

이것은 변경 사항을 다운로드하기만 하고 아무것도 업데이트하지 않는다는 점에 유의하십시오. 변경 사항을 development 브랜치에 병합하기 위해 다음을 실행합니다.

$ git merge origin/master

git merge origin master

반면에 로컬 master 브랜치에서 체크아웃했다면 git pull 명령이 작동하여 master 브랜치를 업데이트했을 것입니다.

분기에 원격 추적 분기가 있는 경우 git pull 명령을 사용하여 변경 사항을 로컬 분기에 통합합니다. 반면 git merge origin/master 명령은 원격 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 Merge

관련 문장 - Git Pull