git은 로컬 버전을 원격 버전으로 바꿉니다.


148

git에게 로컬 파일을 무시하고 병합하지 않고 충돌을 일으키지 않고 원격 지점에서 파일을 가져 오도록하려면 어떻게해야합니까?


1
SO "대답을 참조하십시오 다른처럼 하나 개의 지점을 만들기위한 자식 명령을 위해" 모든 현재 가능한 방법 시뮬레이션git merge -s their .
VonC

더 자세한 정보를 제공 할 수 있다면 도움이 될 것입니다. 원격 지사의 모든 파일 내용 또는 일부 파일 만 채택 하시겠습니까 (예 : 일부 로컬 버전 / 변경 사항 유지)? 보관하고 싶은 지역의 역사가 있습니까? (이미 현지 역사를 통합 한 다른 지점이나 저장소가있는 경우 중요 할 수 있습니다.) 현지 역사를 유지하려면 나중에 어떻게해야합니까? (로컬 히스토리를 가리키는 태그를두고 브랜치를 리모트에있는 것으로 재설정하거나 "병합"할 수 있습니다).
Chris Johnsen

1
질문에 이와 같은 스레드가 있습니다. 로컬 저장소 분기를 원격 저장소와 같이 재설정 HEAD
mico

답변:


169

이것이 가장 안전한 솔루션입니다.

git stash

이제 갈등에 대한 두려움없이 원하는 모든 것을 할 수 있습니다.

예를 들어 :

git checkout origin/master

마스터 브랜치에 원격 변경 사항을 포함 시키려면 다음을 수행하십시오.

git reset --hard origin/master

그러면 "master"분기가 "origin / master"를 가리 킵니다.


90
이것이 HEAD를 분리 할 것이라는 점을 지적 할 가치가있을 것입니다 – 질문자는 다음과 같이 지점에 머무르기를 선호 할 것입니다git stash; git fetch origin; git reset --hard origin/master
Mark Longair

10
Mark Longair의 의견이이 질문에 대한 실제 답변이라고 생각합니다.

그것은 나에게 가장 유용한 답변이었다 +1
Andres

이전 상태로 돌아가는 방법은 git stash무엇입니까? git stash list비었다.
레오

안아주고 싶어
Ugur Kazdal

45

나는이 질문을 이해합니다 : 당신은 업스트림에서 하나의 파일 (또는 선택)의 내용을 완전히 바꾸고 싶습니다. 인덱스에 직접 영향을 미치지 않기를 원하므로 평소처럼 add + commit을 수행합니다.

간단히

git checkout remote/branch -- a/file b/another/file

광범위한 하위 트리에 대해이 작업을 수행하고 대신 인덱스에 직접 영향을 주려면

git read-tree remote/branch:subdir/

그런 다음 선택적으로 작업 사본을 업데이트하여 업데이트 할 수 있습니다

git checkout-index -u --force

2
이것이 바로 내가 원하는 것입니다. 감사.
AutonomousApps

11

예를 들어 테스트 목적으로 만 업데이트 한 파일을 잘못 저장했습니다. 그런 다음 "git status"를 실행하면 파일이 "Modified"로 표시되고 잘못된 단어가 나타납니다. 이전 버전을 원하고 계속 정상적으로 작동합니다.

이 시나리오에서는 다음 명령을 실행할 수 있습니다.

git checkout -- path/filename

10

다음과 같이 "마스터"(원격 / 원본 저장소)에서 원격 파일을 체크 아웃합니다.

git checkout master <FileWithPath>

예 : git checkout master components / indexTest.html


나를 위해이 "git checkout remotes / origin / master <my-file>"처럼 작동
saravanakumar

4

옵션과 함께 -s또는 --strategy옵션을 사용하십시오 -X. 특정 질문에서 모든 원격 파일을 유지하고 동일한 이름의 로컬 파일을 바꾸려고합니다.

원격 버전과의 충돌 교체

git merge -s recursive -Xtheirs upstream/master  

충돌하는 모든 파일의 원격 저장소 버전을 사용합니다.

로컬 버전과의 충돌 교체

git merge -s recursive -Xours upstream/master

충돌하는 모든 파일의 로컬 저장소 버전을 사용합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.