티스토리 뷰

깃허브  → 내 PC 로 브랜치 내용 덮어쓰기

 

[문제상황]

로컬과 원격의 main 레포 작업 내용이 뒤엉켜서 pull로 땡겨온다 해도 로컬의 main에서 commit을 해놨기 때문에 변경사항이 존재함 즉 땡겨와도 보내도 컨플릭트가 불가피한 상황

-> 제가 원했던 건 가장 최신화된 main브랜치의 내용을 로컬 main으로 가져오기만 하면 되는 것이라서 로컬 main의 이전 데이터가 날라가도 상관이 없었습니다. 

 

즉, 깃허브에 있는 원격 main 브랜치의 내용을 가져와서 로컬 저장소의 main 브랜치에 덮어쓰고 싶은 상황 

 

👉방법

(vscode에서 bash사용, 운영체제: window)

*평소에는 sourcetree를 사용하나 git 명령어로 하는 것이 더 편리하여 아래와 같은 방법으로 해결하였습니다.

*여기서 원격 저장소란 github를 지칭하고, 로컬 저장소는 내 컴퓨터(내 pc)라고 생각하시면 됩니다.

 

1. main 브랜치로 체크아웃합니다. 

git checkout main // 로컬의 main을 뜻하겠죠?

2. 원격 저장소의 최신 내용을 가져옵니다.

git fetch origin // 원격 저장소 내용 가져오기

3. 덮어씁니다. (원격 -> 로컬)

git reset --hard origin/main

 

 

내 PC  →  깃허브로 브랜치 내용 덮어쓰기

작업 내역이 너무 꼬였을 때나 컨플릭트 해결이 필요없는 경우만 사용(원래라면 컨플릭트는 해결해야 합니다.)

 

현재 작업한 내용을 원격 저장소(github)에 강제로 push하여 덮어씌울 수 있습니다.

git push origin +브랜치명 //여기서 +는 단순히 둘이 같이쓰세요 의미가 아니라 꼭 붙여야 하는 표식입니다.
// e.g.) git push origin +dev // dev 브랜치에 덮어쓰려면 이렇게 쓰면 되겠죠

 

 

댓글