후레임의 프로그래밍
"git pull"이 로컬 파일을 덮어 쓰도록하려면 어떻게해야합니까? 본문
질문
git pull
에서 로컬 파일을 강제로 덮어 쓰려면 어떻게 해야하나요?
시나리오는 다음과 같습니다.
- 팀원이 작업중인 웹 사이트의 템플릿을 수정하고 있습니다.
- 이미지 디렉토리에 이미지를 추가하고 있지만 소스 제어하에 추가하는 것을 잊었습니다.
- 나중에 이미지를 우편으로 보내고 있습니다.
- 소스 제어 아래에 이미지를 추가하고 다른 변경 사항과 함께 GitHub로 푸시합니다.
- Git은 파일을 덮어 쓰지 않기 때문에 GitHub에서 업데이트를 가져올 수 없습니다.
표시되는 오류 :
오류 : 추적되지 않은 작업 트리 파일 'public / images / icon.gif'는 병합으로 덮어 쓰여집니다.
Git을 강제로 덮어 쓰려면 어떻게해야하나요? 그 사람은 디자이너입니다. 일반적으로 모든 충돌을 직접 해결하므로 서버에는 컴퓨터에서 업데이트해야하는 최신 버전이 있습니다.
답변
⚠ 중요 : 로컬 변경 사항이있는 경우 손실됩니다. -hard
옵션이 있거나없는 경우 푸시되지 않은 모든 로컬 커밋은 손실됩니다. [*]
Git에서 추적하지 않는 파일 (예 : 업로드 된 사용자 콘텐츠)이있는 경우 이러한 파일은 영향을받지 않습니다.
First, run a fetch to update all origin/<branch>
refs to latest:
git fetch --all
현재 분기 백업 :
git checkout -b backup-master
그런 다음 두 가지 옵션이 있습니다.
git reset --hard origin/master
또는 다른 지점에있는 경우 :
git reset --hard origin/<branch_name>
설명 :
git fetch
는 아무것도 병합하거나 리베이스하지 않고 원격에서 최신을 다운로드합니다.
그런 다음 git reset
은 마스터 브랜치를 방금 가져온 항목으로 재설정합니다. -hard
옵션은 작업 트리의 모든 파일을 origin / master
의 파일과 일치하도록 변경합니다.
현재 로컬 커밋 유지
[*] : 재설정하기 전에 master
에서 분기를 만들어 현재 로컬 커밋을 유지할 수 있다는 점에 주목할 가치가 있습니다.
git checkout master
git branch new-branch-to-save-current-commits
git fetch --all
git reset --hard origin/master
이후 모든 이전 커밋은 new-branch-to-save-current-commits
에 보관됩니다.
커밋되지 않은 변경
하지만 커밋되지 않은 변경 사항 (단계적 변경 포함)은 손실됩니다. 필요한 것을 숨기고 커밋하십시오. 이를 위해 다음을 실행할 수 있습니다.
git stash
그런 다음 커밋되지 않은 변경 사항을 다시 적용하려면 :
git stash pop
'스택오버플로우(Stack Overflow)' 카테고리의 다른 글
현재 Git 작업 트리에서 로컬 (추적되지 않은) 파일을 제거하는 방법 (0) | 2020.10.26 |
---|---|
JavaScript에서 문자열에 하위 문자열이 포함되어 있는지 확인하는 방법은 무엇입니까? (0) | 2020.10.26 |
Git 저장소를 이전 커밋으로 되돌리려면 어떻게해야합니까? (0) | 2020.10.26 |
JavaScript closures는 어떻게 작동합니까? (0) | 2020.10.26 |
푸시되지 않은 기존 커밋 메시지를 수정하는 방법은 무엇입니까? (0) | 2020.10.26 |