Git 커밋 푸시 여부 확인 방법

GitBeginner
지금 연습하기

소개

이 랩에서는 Git 커밋이 원격 저장소에 푸시되었는지 확인하는 방법을 배우게 됩니다. 원격 저장소에서 변경 사항을 가져오고 git log @{u}를 사용하여 로컬 및 원격 브랜치를 비교하는 것부터 시작하여 이를 달성하는 다양한 방법을 살펴볼 것입니다.

그런 다음 특정 커밋을 포함하는 원격 브랜치를 식별하기 위해 git branch -r --contains를 사용하는 방법을 배우고, 마지막으로 원격 브랜치를 직접 검사하여 푸시 상태를 확인할 것입니다. 이러한 실습 접근 방식을 통해 Git 커밋의 푸시 상태를 자신 있게 결정하는 데 필요한 실용적인 기술을 습득할 수 있습니다.

원격 Fetch 및 git log @{u} 확인

이 단계에서는 원격 저장소에서 변경 사항을 가져오고 git log @{u}를 사용하여 로컬 브랜치가 원격 브랜치와 어떻게 비교되는지 배우겠습니다.

먼저, 원격 저장소를 시뮬레이션해 보겠습니다. 실제 시나리오에서는 GitHub 또는 GitLab 과 같은 플랫폼에 있을 것입니다. 하지만 이 랩에서는 로컬 디렉토리를 "원격"으로 사용합니다.

프로젝트 디렉토리로 이동합니다.

cd ~/project/my-time-machine

이제 origin이라는 이름의 원격을 추가하여 시뮬레이션된 원격 저장소를 가리키도록 하겠습니다. setup 섹션에서 원격 저장소가 설정되었다고 가정합니다.

git remote add origin ../my-time-machine-remote

이 명령은 로컬 Git 저장소에 ../my-time-machine-remote에 위치한 다른 저장소가 있으며 이를 origin이라고 부른다고 알려줍니다.

이제 이 원격 저장소에서 최신 변경 사항을 가져오겠습니다. git fetch 명령은 원격 저장소에서 커밋, 파일 및 참조를 로컬 저장소로 다운로드합니다. 자동으로 병합하거나 현재 작업을 수정하지 않습니다.

git fetch origin

Git 이 원격 저장소에서 가져오고 있음을 나타내는 출력을 볼 수 있습니다.

가져오기 후, git log @{u} (또는 이 경우 git log origin/master, origin/mastermaster의 업스트림 브랜치이므로) 를 사용하여 로컬 브랜치에 아직 없는 원격 브랜치의 커밋을 볼 수 있습니다. @{u} 또는 @{upstream} 구문은 현재 브랜치의 업스트림 브랜치를 참조합니다.

git log @{u}

로컬 master 브랜치가 처음부터 생성되었고 원격 master 브랜치 (시뮬레이션) 도 비어 있는 상태로 시작되었으며 아직 원격에 커밋을 추가하지 않았으므로 이 명령은 출력을 표시하지 않거나, 원격이 하나로 초기화된 경우 초기 커밋을 표시할 수 있습니다. 중요한 부분은 이 명령이 수행하는 작업을 이해하는 것입니다. 즉, 업스트림 브랜치 (origin/master) 에 있지만 현재 로컬 브랜치 (master) 에는 없는 커밋을 표시합니다.

로컬 브랜치와 원격 브랜치의 차이점을 이해하는 것은 협업 및 프로젝트 최신 상태 유지를 위해 매우 중요합니다. git fetchgit log @{u}는 로컬 작업 디렉토리를 변경하지 않고 원격 저장소의 상태를 검사하는 강력한 도구입니다.

git branch -r --contains 사용

이 단계에서는 git branch -r --contains 명령을 사용하여 특정 커밋을 포함하는 원격 브랜치를 찾는 방법을 살펴보겠습니다. 이는 특정 변경 사항이 원격 브랜치에 포함되었는지 알고 싶을 때 유용합니다.

먼저, 프로젝트 디렉토리에 있는지 확인합니다.

cd ~/project/my-time-machine

이제 로컬 저장소에 새 커밋을 생성해 보겠습니다. 이렇게 하면 원격 저장소에서 검색할 커밋이 생성됩니다.

echo "Adding another message" >> message.txt
git add message.txt
git commit -m "Add another message"

새 커밋을 확인하는 출력을 볼 수 있습니다.

이제 git log --oneline을 사용하여 기록을 보고 최신 커밋의 커밋 해시를 가져오겠습니다.

git log --oneline

"Add another message" 메시지가 있는 커밋의 커밋 해시 (짧은 문자열) 를 복사합니다. abcdefg와 같은 형태일 것입니다.

이제 방금 복사한 커밋 해시를 사용하여 git branch -r --contains를 사용해 보겠습니다. YOUR_COMMIT_HASH를 실제 해시로 바꿉니다.

git branch -r --contains YOUR_COMMIT_HASH

이 새 커밋을 아직 원격 저장소 (origin) 에 푸시하지 않았으므로 이 명령은 출력에 origin/master를 표시하지 않아야 합니다. 이는 원격 브랜치 origin/master가 방금 로컬에서 생성한 커밋을 아직 포함하지 않기 때문입니다.

git branch -r 부분은 원격 추적 브랜치를 나열합니다. --contains YOUR_COMMIT_HASH 부분은 이 목록을 지정된 커밋을 포함하는 브랜치만 표시하도록 필터링합니다.

이 명령은 원격 브랜치와 관련된 커밋의 상태를 확인하는 강력한 방법입니다. 변경 사항이 원격 저장소에 통합되었는지 이해하는 데 도움이 됩니다.

원격 브랜치로 확인

이 마지막 단계에서는 로컬 커밋을 원격 저장소로 푸시한 다음 git branch -r --contains를 다시 사용하여 원격 브랜치에 이제 커밋이 포함되어 있는지 확인합니다.

먼저, 프로젝트 디렉토리에 있는지 확인합니다.

cd ~/project/my-time-machine

이제 로컬 master 브랜치를 origin 원격 저장소로 푸시해 보겠습니다.

git push origin master

커밋이 원격 저장소로 푸시되고 있음을 나타내는 출력을 볼 수 있습니다.

푸시가 완료된 후, 확인하려는 커밋의 커밋 해시를 가져오겠습니다. git log --oneline을 다시 사용합니다.

git log --oneline

"Add another message" 메시지가 있는 커밋의 커밋 해시를 복사합니다.

이제 방금 복사한 커밋 해시를 사용하여 git branch -r --contains를 사용합니다. YOUR_COMMIT_HASH를 실제 해시로 바꿉니다.

git branch -r --contains YOUR_COMMIT_HASH

이번에는 출력에 origin/master가 표시되어야 합니다. 이는 커밋이 원격 저장소로 성공적으로 푸시되었고 원격 브랜치 origin/master가 이제 이 커밋을 포함하고 있음을 확인합니다.

변경 사항을 푸시한 다음 원격 브랜치에서 확인하는 이 프로세스는 Git 에서, 특히 다른 사람과 협업할 때 일반적인 워크플로우입니다. 이를 통해 기여가 팀의 나머지 구성원에게 제공되도록 보장합니다.

이제 원격 저장소에서 성공적으로 가져오고, git branch -r --contains를 사용하여 커밋을 확인하고, 변경 사항을 푸시하고, 원격 브랜치에서 커밋을 확인했습니다. 이는 Git 에서 원격 저장소로 작업하는 데 필수적인 기술입니다.

요약

이 랩에서는 로컬 Git 커밋이 원격 저장소로 푸시되었는지 확인하는 방법을 배웠습니다. 먼저, 원격 저장소를 시뮬레이션하고 이를 로컬 프로젝트에 origin 원격 저장소로 추가하는 것으로 시작했습니다. 그런 다음 git fetch origin을 사용하여 로컬 작업 상태를 수정하지 않고 원격 저장소에서 최신 정보를 검색했습니다.

fetch 이후, 로컬 브랜치를 구성된 업스트림 브랜치 (이 경우 origin/master) 와 비교하는 강력한 방법인 git log @{u} 명령을 살펴보았습니다. 이 명령은 원격 저장소에 있지만 로컬에는 없는 커밋을 시각화하여 브랜치의 동기화 상태에 대한 통찰력을 제공합니다. 커밋이 푸시되지 않은 경우 초기 출력은 비어 있을 수 있지만, 이 명령을 이해하는 것은 아직 원격 저장소와 공유되지 않은 커밋을 식별하는 데 매우 중요합니다.