Git 저장소가 원격 저장소와 최신 상태인지 확인하는 방법

GitBeginner
지금 연습하기

소개

이 랩에서는 로컬 Git 저장소가 원격 저장소와 최신 상태인지 확인하는 방법을 배우게 됩니다. 로컬 작업을 변경하지 않고 원격 저장소에서 최신 변경 사항을 가져오는 것부터 시작하여 이를 달성하기 위한 필수 단계를 다룰 것입니다.

fetch 작업을 수행한 후에는 로컬 브랜치와 원격 브랜치를 비교하여 차이점을 식별하는 방법을 배우게 됩니다. 마지막으로, git log 명령을 사용하여 로컬 커밋이 원격 저장소와 동기화되었는지 시각적으로 확인하여 프로젝트의 최신 버전을 확보하는 방법을 살펴보겠습니다.

git fetch 로 원격 저장소 가져오기

이 단계에서는 원격 Git 저장소에서 변경 사항을 가져오는 방법을 배우겠습니다. 다른 사람들과 함께 프로젝트를 진행 중인데, 그들이 몇 가지 업데이트를 했다고 가정해 봅시다. git fetch는 자신의 작업을 변경하지 않고 해당 업데이트를 가져오는 데 사용하는 명령어입니다.

먼저, 원격 저장소를 시뮬레이션해 보겠습니다. 기존 로컬 저장소에 원격 URL 을 추가하여 이를 수행합니다. 실제 시나리오에서는 GitHub 또는 GitLab 과 같은 플랫폼에서 호스팅되는 저장소의 URL 이 됩니다.

아직 해당 디렉토리에 있지 않다면 프로젝트 디렉토리로 이동합니다.

cd ~/project/my-time-machine

이제 더미 원격 URL 을 추가해 보겠습니다. 이 원격을 origin이라고 부르겠습니다. 이는 일반적인 관례입니다.

git remote add origin https://github.com/example/my-time-machine.git

이 명령은 어떤 출력도 생성하지 않지만, origin이라는 원격 저장소에 대해 알도록 로컬 저장소를 구성했습니다.

이제 git fetch를 사용하여 원격 저장소의 변경 사항에 대한 정보를 검색해 보겠습니다. 이것은 더미 URL 이므로 git fetch는 실제로 코드를 다운로드하지 않지만, 프로세스를 시뮬레이션하고 수행할 작업을 보여줍니다.

git fetch origin

다음과 유사한 출력을 볼 수 있습니다 (정확한 출력은 Git 버전 및 구성에 따라 다를 수 있습니다).

fatal: repository 'https://github.com/example/my-time-machine.git/' not found

"repository not found" 오류에 대해 걱정하지 마십시오. 이는 더미 URL 을 사용했기 때문에 예상되는 결과입니다. 중요한 부분은 git fetch 명령을 실행했다는 것입니다.

실제 시나리오에서 git fetch origin은 원격 저장소에 연결하여 로컬 저장소에 존재하지 않는 모든 새 커밋과 브랜치를 다운로드하여 특수 영역에 저장합니다. 이는 이러한 변경 사항을 현재 작업 브랜치에 병합하지 않습니다. 이를 통해 다른 사용자가 변경한 사항을 자신의 작업에 통합하기 전에 확인할 수 있습니다.

git fetch를 우체국에 가서 우편물을 찾는 것과 같다고 생각하십시오. 우편물 (변경 사항) 을 받지만, 준비될 때까지 열어서 책상에 놓지 않습니다 (작업에 병합).

git status 로 로컬 및 원격 비교

이 단계에서는 git status 명령을 사용하여 fetch 후 로컬 저장소가 원격 저장소와 어떻게 비교되는지 확인합니다.

아직 해당 디렉토리에 있지 않다면 프로젝트 디렉토리로 이동합니다.

cd ~/project/my-time-machine

이제 git status 명령을 실행합니다.

git status

다음과 유사한 출력을 볼 수 있습니다.

On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

이 출력을 분석해 보겠습니다.

  • "On branch master": 현재 master 브랜치에 있다는 것을 알려줍니다.
  • "Your branch is up to date with 'origin/master'": 이것이 핵심 부분입니다. 로컬 master 브랜치가 origin 원격 저장소의 master 브랜치와 동일한 커밋을 가지고 있음을 나타냅니다.

이전 단계에서 git fetch 명령이 더미 원격 URL 로 인해 오류가 발생했지만, Git 은 여전히 내부 추적 정보를 업데이트했습니다. git fetch가 새 커밋을 성공적으로 검색하는 실제 시나리오에서 git status 출력은 로컬 브랜치가 원격 브랜치보다 뒤쳐져 있으며 변경 사항을 통합하기 위해 git pull을 수행하라고 제안합니다.

git status 명령은 저장소의 상태를 보여주는 창입니다. 현재 브랜치가 무엇인지, 로컬 브랜치가 원격 브랜치와 동기화되었는지, 작업 디렉토리 또는 스테이징 영역에 커밋되지 않은 변경 사항이 있는지 알려줍니다. git status를 정기적으로 확인하는 것은 프로젝트의 상태에 대한 정보를 유지하는 좋은 습관입니다.

git log 로 동기화된 커밋 확인

이 단계에서는 git log 명령을 사용하여 커밋 기록을 확인하고 git fetch가 표시되는 내용에 어떤 영향을 미치는지 이해합니다.

아직 해당 디렉토리에 있지 않다면 프로젝트 디렉토리로 이동합니다.

cd ~/project/my-time-machine

git log 명령을 실행하여 커밋 기록을 봅니다.

git log

이전 랩에서 만든 커밋을 볼 수 있습니다.

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master, origin/master)
Author: Jane Doe <jane.doe@example.com>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

출력에 이제 (HEAD -> master, origin/master)가 표시됩니다. 이는 로컬 master 브랜치 (HEAD -> master) 와 origin/master에 대한 원격 추적 브랜치 (origin/master) 가 모두 동일한 커밋을 가리키고 있음을 나타냅니다. 이는 로컬 저장소가 원격 저장소와 동기화되었음을 확인합니다 (또는 적어도 git fetch 명령 후 Git 이 원격 저장소에 대해 가지고 있는 정보와 동기화됨).

git fetch가 원격 저장소에서 새 커밋을 가져온 실제 시나리오에서 git log를 실행하면 해당 새 커밋이 표시됩니다. 커밋 기록에 표시되며, origin/master 포인터는 원격 저장소의 최신 커밋을 가리키고, 로컬 master 브랜치는 마지막 로컬 커밋을 계속 가리킵니다. 로그에서 이러한 시각적 차이를 통해 병합하기 전에 원격 저장소에서 사용할 수 있는 변경 사항을 정확히 확인할 수 있습니다.

git log 명령은 프로젝트의 기록을 이해하는 데 필수적입니다. 커밋 시퀀스, 작성자, 작성 시기 및 커밋 메시지를 볼 수 있습니다. git fetch와 함께 사용하면 로컬 기록과 원격 저장소의 기록 간의 차이점을 시각화하는 데 도움이 됩니다.

로그 보기를 종료하려면 q를 누르십시오.

요약

이 랩에서는 로컬 Git 저장소가 원격 저장소와 최신 상태인지 확인하는 방법을 배웠습니다. 먼저, 로컬 작업 복사본을 수정하지 않고 원격 저장소에서 변경 사항을 가져오는 git fetch의 목적을 이해했습니다. 원격을 추가하는 것을 시뮬레이션한 다음 git fetch를 실행하여 원격 저장소와 어떻게 상호 작용하는지 확인했습니다.

제공된 내용에 자세히 설명되어 있지 않은 후속 단계는 일반적으로 git status를 사용하여 로컬 브랜치를 가져온 원격 브랜치와 비교하고, git log를 사용하여 커밋 기록을 시각적으로 검사하고 차이점을 식별하여 로컬 저장소가 원격 저장소와 동기화되었는지 확인하는 것을 포함합니다.