Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

후레임의 프로그래밍

"git pull"이 로컬 파일을 덮어 쓰도록하려면 어떻게해야합니까? 본문

스택오버플로우(Stack Overflow)

"git pull"이 로컬 파일을 덮어 쓰도록하려면 어떻게해야합니까?

후레임 2020. 10. 26. 01:19
질문

 

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



출처 : http://stackoverflow.com/questions/1125968