git push origin [branch] 명령어 해부 (feat. Troubleshooting)

oversleep·2025년 2월 11일
0

Web

목록 보기
2/11
post-thumbnail

글을 쓰게 된 배경

평소 git push를 자주 사용하지만, 출력되는 메시지의 의미를 제대로 이해하지 못했습니다.
이번 기회에 각 메시지가 의미하는 바를 상세히 알아보고, 예상치 못한 상황에서의 대처 방법까지 정리해보았습니다.

git push origin [branch] 입력하면 나오는 내용:

Enumerating objects: 605, done.
Counting objects: 100% (605/605), done.
Delta compression using up to 8 threads
Compressing objects: 100% (580/580), done.
Writing objects: 100% (605/605), 255.34 KiB | 9.46 MiB/s, done.
Total 605 (delta 315), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (315/315), done.
remote: 
remote: Create a pull request for 'feat/cyw' on GitHub by visiting:
remote:      https://github.com/pickup-basketball/pickup-basketball-rn-app/pull/new/feat/cyw
remote: 
remote: Heads up! The branch 'feat/cyw' that you pushed to was renamed to 'main'.
remote: 
To https://github.com/pickup-basketball/pickup-basketball-rn-app.git
 * [new branch]      feat/cyw -> feat/cyw

각 메시지 해석

1. Enumerating objects: 605, done.

  • Git이 푸시할 객체(object) 개수를 세고 있음
  • 총 605개의 객체(파일 변경 사항, 커밋 정보 등)를 찾아서 처리할 준비가 완료됨

2. Counting objects: 100% (605/605), done.

  • 푸시할 객체 개수를 최종적으로 확인하는 과정
  • 총 605개 객체를 푸시할 것임

3. Delta compression using up to 8 threads

  • Git이 변경된 부분(델타, delta)을 효율적으로 압축하기 위해 최대 8개의 CPU 스레드를 사용함
  • 델타 압축(delta compression)이란 이전 버전과의 차이점만 저장하는 방식을 의미

4. Compressing objects: 100% (580/580), done.

  • 푸시할 580개 객체를 압축 완료
  • 원래 605개였는데, 그중에서 델타 압축을 적용할 수 있는 580개를 압축한 것

5. Writing objects: 100% (605/605), 255.34 KiB | 9.46 MiB/s, done.

  • 압축된 객체를 원격 저장소(GitHub)에 255.34KB 크기로 전송
  • 전송 속도: 9.46MB/s
  • 총 605개 객체를 모두 기록(writing) 완료

6. Total 605 (delta 315), reused 0 (delta 0), pack-reused 0

  • 푸시된 총 객체 수: 605개
  • 315개 객체는 델타 방식으로 전송(이전 커밋과 비교해 변경된 부분만 푸시됨)
  • reused 0, pack-reused 0: 로컬에서 캐시된 기존 객체를 재사용하지 않고 모든 객체를 새로 전송했다는 의미

7. remote: Resolving deltas: 100% (315/315), done.

  • 원격 저장소(GitHub)에서 푸시된 변경 사항을 적용하면서 델타(차이점)를 병합하고 있음
  • 315개의 변경된 객체(델타)를 적용 완료

8. remote:

  • GitHub의 원격 저장소에서 발생한 메시지를 표시

9. remote: Create a pull request for 'feat/cyw' on GitHub by visiting:

  • GitHub에서 feat/cyw 브랜치로 푸시했으니, PR(Pull Request)을 생성하라고 안내하는 메시지
  • 제공된 링크를 클릭하면 PR 생성 페이지로 이동 가능

10. remote: Heads up! The branch 'feat/cyw' that you pushed to was renamed to 'main'.

  • 중요! GitHub에서 feat/cyw 브랜치를 자동으로 main 브랜치로 변경했다는 의미
  • 즉, feat/cyw라는 브랜치는 없어지고, main 브랜치로 푸시됨

11. To https://github.com/pickup-basketball/pickup-basketball-rn-app.git

  • 푸시된 원격 저장소 주소
  • pickup-basketball/pickup-basketball-rn-app 리포지토리에 푸시됨

12. * [new branch] feat/cyw -> feat/cyw

  • 새로운 브랜치(feat/cyw)가 원격 저장소에도 생성됨

🛠️ 결론: 무슨 일이 벌어진 것인가?

  • feat/cyw 브랜치를 GitHub에 push 함
  • 605개의 객체를 압축해서 보냈고, 315개는 변경된 부분만 델타로 전송됨
  • GitHub에서 feat/cyw 브랜치를 main으로 자동 변경함
  • GitHub에서 PR을 만들라고 안내하고 있음

⚠️ 주의할 점

  • 원래 feat/cyw 브랜치를 푸시했는데, GitHub에서 자동으로 main 브랜치로 바꿔버림
  • 원격에서 브랜치가 강제로 바뀌었으니, 로컬에서도 git fetch 후 main을 체크아웃해서 확인하는 게 좋음

현재 상황 분석

  • feat/cyw 브랜치를 푸시했는데 자동으로 main 브랜치로 변경됨
  • 이는 일반적이지 않은 상황

왜 이런 일이 발생했나?

  • GitHub 저장소 설정에서 브랜치 보호 규칙이나 자동 브랜치 리네이밍 규칙이 설정되어 있을 가능성이 높음
  • 또는 저장소 관리자가 특별한 정책을 설정했을 수 있음

해결 방법

a) 즉시 할 일

Trouble Shooting Guide

b) 장기적 해결

  • 저장소 관리자에게 문의하여 브랜치 자동 리네이밍 정책 확인
  • GitHub 저장소 설정에서 브랜치 보호 규칙 확인
  • 팀의 브랜칭 전략과 정책 재확인

참고 문서

profile
궁금한 것, 했던 것, 시행착오 그리고 기억하고 싶은 것들을 기록합니다.

0개의 댓글