1. 상황 요약
VSCode에서 Git 작업을 하던 중, 원격 저장소의 변경사항을 제대로 다 받았는지 확신이 들지 않았다.
이때 단순히 git status만 확인해도 되는지 궁금했다.
결론부터 말하면, 더 정확하게 확인하려면 아래 순서가 좋다.
git fetch origin
git status
더 확실히 커밋 개수까지 확인하려면 다음 명령도 함께 사용한다.
git rev-list --left-right --count HEAD...origin/main
2. git fetch origin의 의미
git fetch origin
이 명령은 원격 저장소 origin의 최신 정보를 가져온다.
중요한 점은 내 로컬 소스 파일은 변경하지 않는다는 것이다.
가져오는 것은 다음 정보다.
- 원격 저장소의 최신 커밋 정보
- 원격 브랜치 상태
- origin/main 같은 원격 추적 브랜치 정보
예를 들어 현재 상태가 다음과 같다고 가정한다.
내 로컬 main:
A - B
원격 origin/main:
A - B - C - D
이 상태에서 git fetch origin을 실행하면 다음처럼 된다.
내 로컬 main:
A - B
내가 알고 있는 origin/main:
A - B - C - D
즉, 원격에 C, D 커밋이 있다는 사실만 가져온다.
내 작업 폴더의 실제 파일은 아직 바뀌지 않는다.
3. git status의 의미
git status
이 명령은 현재 로컬 Git 상태를 보여준다.
확인할 수 있는 내용은 다음과 같다.
- 현재 브랜치
- 수정된 파일
- 새로 생긴 파일
- 삭제된 파일
- 커밋 대기 파일
- 원격 브랜치보다 앞서 있는지
- 원격 브랜치보다 뒤처져 있는지
예를 들어 다음 메시지가 나오면 원격보다 뒤처진 상태다.
Your branch is behind 'origin/main' by 3 commits.
뜻은 다음과 같다.
원격 origin/main에는 커밋이 3개 더 있는데,
내 로컬 main에는 아직 반영되지 않았다.
이 경우 Pull이 필요하다.
git pull
반대로 다음 메시지가 나오면 로컬 브랜치와 원격 브랜치가 같은 상태다.
Your branch is up to date with 'origin/main'.
뜻은 다음과 같다.
현재 로컬 브랜치는 원격 origin/main 기준으로 최신 상태다.
4. 왜 git fetch origin 후 git status를 해야 하나?
git status는 원격 저장소에 직접 접속해서 최신 상태를 조회하지 않는다.
즉, 마지막으로 fetch 또는 pull 했던 시점의 origin/main 정보를 기준으로 비교한다.
그래서 정확히 확인하려면 먼저 원격 정보를 갱신해야 한다.
git fetch origin
git status
이 순서가 중요한 이유는 다음과 같다.
git fetch origin
→ 원격 저장소의 최신 상태 정보를 가져옴
→ 내 실제 소스 파일은 변경하지 않음
git status
→ 현재 로컬 브랜치와 방금 갱신한 origin/main을 비교함
5. Pull을 다 받았는지 확인하는 기본 명령
VSCode 터미널에서 프로젝트 폴더 기준으로 실행한다.
git fetch origin
git status
정상적으로 전부 받은 상태라면 다음처럼 나온다.
Your branch is up to date with 'origin/main'.
그리고 수정된 파일도 없다면 다음 문구도 함께 나온다.
nothing to commit, working tree clean
6. 커밋 차이를 숫자로 확인하는 방법
더 정확하게 확인하려면 아래 명령을 실행한다.
git rev-list --left-right --count HEAD...origin/main
예상 출력 예시는 다음과 같다.
0 0
해석:
로컬과 원격이 완전히 동일하다.
Pull 받을 것도 없고 Push할 것도 없다.
다른 예시도 있다.
0 3
해석:
로컬이 원격보다 3개 커밋 뒤처져 있다.
git pull이 필요하다.
2 0
해석:
로컬에 원격보다 2개 커밋이 더 있다.
git push가 필요할 수 있다.
2 3
해석:
로컬과 원격이 서로 갈라진 상태다.
로컬에는 2개 커밋이 있고, 원격에는 3개 커밋이 따로 있다.
바로 Pull하기 전에 충돌 가능성을 고려해야 한다.
7. 로컬 수정 파일이 있는 경우
git status 결과가 다음처럼 나올 수 있다.
Changes not staged for commit:
modified: src/main/webapp/js/ozCommon.js
modified: src/main/webapp/WEB-INF/jsp/toxinfo/cmmn/chatbot20260529.jsp
no changes added to commit
이 뜻은 다음과 같다.
원격 Pull 여부와 별개로,
현재 PC에 아직 커밋하지 않은 로컬 수정사항이 있다.
이 상태에서 Pull을 하면 충돌이 날 수 있다.
따라서 Pull 전에 아래 셋 중 하나를 선택해야 한다.
8. Pull 전 로컬 수정사항 처리 방법
방법 1. 내 수정사항을 커밋하고 Pull
내 변경사항을 보존해야 한다면 커밋한다.
git add .
git commit -m "작업 내용 정리"
git pull
방법 2. 임시 저장 후 Pull
아직 커밋하기 애매하지만 변경사항은 보존해야 한다면 stash를 사용한다.
git stash push -m "임시 작업 저장"
git pull
git stash pop
stash pop 후 충돌이 나면 해당 파일을 직접 정리해야 한다.
방법 3. 로컬 수정사항 버리기
수정사항이 필요 없다면 특정 파일만 되돌린다.
git restore 파일경로
예시:
git restore src/main/webapp/js/ozCommon.js
구버전 Git에서는 다음 명령을 사용할 수 있다.
git checkout -- 파일경로
주의할 점은 전체를 한 번에 날리는 명령은 신중해야 한다.
git reset --hard
이 명령은 로컬 수정사항을 크게 잃을 수 있으므로, 정확히 이해한 경우에만 사용한다.
9. 실무에서 추천하는 확인 루틴
VSCode에서 Pull 상태를 확인할 때는 아래 순서를 추천한다.
git fetch origin
git status
git rev-list --left-right --count HEAD...origin/main
결과가 아래처럼 나오면 가장 깔끔한 상태다.
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
그리고 숫자 확인 결과가 다음이면 완전히 동일한 상태다.
0 0
10. 한 줄 요약
git fetch origin은 원격 최신 정보를 가져오기만 하고 내 소스는 바꾸지 않으며, git status는 그 정보를 기준으로 현재 로컬 브랜치가 최신인지 확인하는 명령이다.
'study > TIP' 카테고리의 다른 글
| 커서 학생인증은 안되는구나... edu 메일만 되는군요. (0) | 2026.07.01 |
|---|---|
| Git 이슈 1. Eclipse / 디자이너 PC에서 Pull 시 .gitignore 충돌 해결 (0) | 2026.06.10 |
| 바이브코딩, 감으로 하지 말고 점수로 보자 — VibeGraph 만든 이야기 (1) | 2026.06.07 |
| ORACLE 대용량 데이터 백업 처리시 (0) | 2026.01.16 |
| JENKINS MVN BUILD OPTION (0) | 2026.01.14 |