강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

부리부리님의 프로필 이미지
부리부리

작성한 질문수

git 브랜치 push rejected

작성

·

230

0

제가 main, dev2 브랜치가 있는데
깃허브를 처음 사용하다보니 그냥 dev2 브랜치에서만 계속 작업하며 commit, push를 진행했습니다.

위부터 main, dev2 브랜치입니다.(master브랜치는 작업한 내용이 거의 없어서 무시해도 될 것 같습니다)
지금 둘이 꼬여서 이상해진 것 같습니다..
저는 dev2 브랜치에서 모든 작업을 해서 dev2 브랜치 내용만 원격에 다 올라갔으면 좋겠어요
일단 제가 작업한 레포지토리의 default 브랜치를 main이 아닌 dev2 브랜치로 설정하긴 했는데
지금 원격저장소에 main브랜치에서 작업했던 파일이 올라가는 부분이 있어서요
main에 dev2 브랜치를 덮어쓰기 하면 될까요?


그냥 dev2 브랜치 내용을 push 하려니까 위와 같은 창이 나옵니다.

저번에 한 번 프로젝트 내용을 전부 날린적이 있어서 정확한 답변 후에 진행하려고 합니다!

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

이혜지님의 문제는 GitHub에서 dev2 브랜치의 변경 사항을 main에 덮어쓰고 싶으나, push가 거부되는 상황인 것 같습니다. 일반적으로 push가 거부되는 이유는 로컬 브랜치가 원격 브랜치보다 뒤쳐져 있을 때 발생합니다. 이는 원격 브랜치에 로컬에 없는 커밋이 있기 때문입니다.

main에 dev2를 덮어쓰고 싶다면, 아래 과정을 따라 진행하시길 권장합니다:

  1. 먼저, 모든 중요한 변경 사항이 commit되었는지 확인하세요.
  2. 원격 dev2 브랜치의 최신 변경 사항을 로컬 dev2 브랜치로 pull하여 동기화합니다.
    
    git checkout dev2
    git pull origin dev2
    

  3. main 브랜치로 전환한 뒤, dev2 브랜치의 내용을 main에 덮어씌우기 위해 dev2 브랜치를 main에 merge합니다.
    
    git checkout main
    git merge dev2
    

  4. merge 후, main 브랜치의 내용을 원격 저장소의 main 브랜치로 push합니다.
    
    git push origin main
    

주의: 작업을 시작하기 전에 현재 프로젝트 상태를 백업하는 것이 좋습니다. 이를 위해 현재 상태를 새 브랜치로 체크아웃하여 백업할 수 있습니다.

git checkout -b backup-branch

이 과정을 거치면, dev2 브랜치의 변경 사항이 main 브랜치에 반영되어 원격 저장소에도 dev2 브랜치의 내용만 올라가게 됩니다. 하지만 이러한 작업은 충분히 고려하고 신중히 진행해야 합니다. 사전에 충분한 백업과 함께, 동료 개발자와의 협의도 중요합니다.

부리부리님의 프로필 이미지
부리부리

작성한 질문수

질문하기