git으로 관리중인 프로젝트에서 소스 코드를 막 변경하며 개발하다가, 저장소의 자신이 속한 branch의 소스가 다른 사람으로 인해 업데이트 되면 받아야 할 때가 생깁니다.
그냥 git pull 하면 충돌의 여지가 아주 많기 때문에 진행이 잘 되지 않습니다. 간단한 수정 또는 테스트용으로 살짝만 바꿨는데도 git pull이 잘 안 된다면, 아래와 같은 방법이 있습니다.
1. 기존 변경 사항을 무시
git reset --hard HEAD
git pull
reset --hard HEAD 는 가장 최근 커밋으로 소스 코드를 돌려버립니다.
이제 원격 저장소의 가장 최근 커밋과 같은 소스가 됐으니, 충돌이 일어날 리가 없죠.
이 상태에서 git pull을 하는 원리입니다.
아니면,
git fetch --all
git reset --hard HEAD
먼저 최신 소스를 받아온 후 가장 최근 커밋으로 돌리는 방법이 있습니다.
2. 기존 변경 사항 저장
git checkout master
git branch new-branch-to-save-current-commits
git fetch --all
git reset --hard origin/master
먼저 master 브랜치로 가줍니다. 그리고, master에서 새로운 브랜치를 쳐줍니다.
그 다음 아직 master 브랜치에 있을텐데, 여기서 fetch --all을 통해 모든 최신 소스를 받아옵니다.
마지막으로 reset을 통해 강제로 최신 소스를 적용시키는 원리입니다.
fetch 하기 전까지의 모든 커밋들은 new-branch-to-save-current-commits 브랜치에 남아있습니다. 이를 위해선 master에 가서 새로운 브랜치를 치기 전에 이전 변경 사항들은 모두 commit을 해놔야겠죠.
출처: https://stackoverflow.com/questions/1125968/how-do-i-force-git-pull-to-overwrite-local-files
'Programming > Git' 카테고리의 다른 글
깃(git) - 특정 커밋의 수정 내용 확인하기 (0) | 2019.01.10 |
---|---|
깃(git) - 프로젝트/저장소마다 다른 계정 정보 사용하기 (0) | 2018.04.02 |
깃(git) - .gitignore 업데이트 후 적용하기 (0) | 2017.05.23 |
Git 이란? (1) | 2016.04.04 |