programing

git 로컬 버전을 원격 버전으로 교체

bestprogram 2023. 7. 6. 22:24

git 로컬 버전을 원격 버전으로 교체

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

이것이 가장 안전한 해결책입니다.

git stash

이제 당신은 갈등의 두려움 없이 당신이 원하는 것을 무엇이든 할 수 있습니다.

예를 들어:

git checkout origin/master   # or origin/main

마스터 분기에 원격 변경사항을 포함하려면 다음을 수행합니다.

git reset --hard origin/master  # or origin/main

이렇게 하면 "master"를 분기하여 "origin/master"를 가리킵니다.

질문을 이와 같이 이해합니다. 하나의 파일(또는 선택 항목)의 내용을 업스트림에서 완전히 바꾸려고 합니다.인덱스에 직접적인 영향을 미치지 않으려면 평소처럼 추가 + 커밋을 수행해야 합니다.

간단히 하라

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

광범위한 하위 트리에 대해 이 작업을 수행하고 대신 인덱스에 직접 영향을 미치려면 다음을 사용합니다.

git read-tree remote/branch:subdir/

그런 다음 (선택적으로) 작업 복사본을 업데이트할 수 있습니다.

git checkout-index -u --force

예를 들어 테스트 목적으로만 업데이트한 파일을 잘못 저장한 것으로 알고 있습니다.그런 다음 "git status"를 실행하면 파일이 "수정됨"으로 표시되고 몇 가지 나쁜 말을 합니다.이전 버전을 다시 사용하고 정상적으로 작동하기만 하면 됩니다.

이 시나리오에서는 다음 명령을 실행하면 됩니다.

git checkout -- path/filename

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

git checkout master <FileWithPath>

예: git checkout 마스터 구성 요소/indexTest.html

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

충돌을 원격 버전으로 바꾸기

git merge -s recursive -Xtheirs upstream/master  

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

충돌을 로컬 버전으로 바꿉니다.

git merge -s recursive -Xours upstream/master

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

이전 로컬 분기 이름 바꾸기

git branch -m master old_master

원격에서 분기 체크아웃

git checkout -b master origin/master

언급URL : https://stackoverflow.com/questions/5288172/git-replace-local-version-with-remote-version