programing

로컬 파일을 덮어쓰지 않고 원격에서 파일을 꺼내려면 어떻게 해야 합니까?

iphone6s 2023. 9. 19. 20:55
반응형

로컬 파일을 덮어쓰지 않고 원격에서 파일을 꺼내려면 어떻게 해야 합니까?

기존 원격 레포에 새로운 깃 레포를 설정하려고 합니다.

로컬 파일이 원격 레포를 덮어쓰길 원하지만 git에는 먼저 원격 파일을 끌어와 병합해야 한다고 나와 있습니다.

원격에서 로컬 파일을 덮어쓰지 않고 끄집어낼 수 있는 방법이 있습니까?

음, 네, 그리고 아니...

로컬 복사본이 원격지에 있는 파일을 " 덮어쓰기"를 원하시겠지만, 누군가가 원격 저장소에 있는 파일을 다른 방식으로 수정했는데, 변경 사항을 무시하고 충돌 가능성을 고려하지 않고 자신의 변경 사항을 "강제"하려고 한다면, 음, 저는 당신(그리고 당신의 동료)을 위해 눈물을 흘립니다;-)

그건 그렇지만, "올바른 일"을 하는 은 정말 쉽다는 말입니다.."

1단계:

git stash

당신의 지역 레포에.이렇게 하면 로컬 업데이트를 임시 저장한 다음 수정된 파일을 편집 전 상태로 되돌립니다.

2단계:

git pull

수정된 버전을 얻을 수 있습니다.바라건대, 걱정하시는 파일의 새로운 버전을 얻지는 못할 것입니다.만약 그렇지 않다면, 다음 단계는 원활하게 진행될 것입니다.만약 그렇게 된다면, 당신은 할 일이 좀 있고, 당신은 당신이 그렇게 한 것을 기뻐할 것입니다.

3단계:

git stash pop

그러면 1단계에서 숨겨둔 수정된 버전과 2단계에서 방금 꺼냈던 버전이 병합됩니다.만사가 순조롭다면, 당신은 모든 준비를 다 할 것입니다!

반면에 2단계에서 조정한 내용과 수정한 내용 사이에 실제 충돌이 발생한 경우(중간에 다른 사용자가 편집하여) 이를 확인하고 해결하라는 메시지가 표시됩니다.해요.

이런 식으로 일이 훨씬 더 잘 해결될 것입니다. 아마도 여러분의 입장에서는 어떠한 실질적인 작업 없이도 여러분의 변화를 유지하는 동시에 여러분에게 심각하고 심각한 문제에 대해 알려줄 것입니다.

로컬 변경사항을 먼저 저장한 다음 끌어다 놓은 다음 저장을 열 수 있습니다.

git stash
git pull origin master
git stash pop

원격에서 변경 사항을 재정의하는 경우 충돌이 발생하며 이를 수동으로 해결해야 합니다.

따라서 로컬 저장소에 로컬 변경사항을 커밋했습니다. 원격으로 할 수 git fetch.정말로.git pull는 2단계 작업입니다. 비파괴적입니다.git fetch뒤에 a.git merge. 참고 항목 '깃끌기'와 '깃끌기' 차이점은 무엇입니까?더 많은 토의를 위하여

Detailed example:

리포지토리가 이와 같다고 가정합니다(변경한 경우).test2:

* ed0bcb2 - (HEAD, master) test2
* 4942854 - (origin/master, origin/HEAD) first

그리고.origin리포지토리는 이와 같습니다(다른 someone가 커밋됨).test1):

* 5437ca5 - (HEAD, master) test1
* 4942854 - first

이 시점에서 git은 불만을 제기할 것이고 만약 당신이 당신의 것을 밀려고 한다면 당신에게 먼저 당겨달라고 요구할 것입니다.test2원격 저장소로 이동할 수 있습니다.로컬 리포지토리를 수정하지 않고 test1이 무엇인지 확인하려면 다음을 실행합니다.

$ git fetch

Your result local repository would be like this:

* ed0bcb2 - (HEAD, master) test2 
| * 5437ca5 - (origin/master, origin/HEAD) test1 
|/  
* 4942854 - first 

Now you have the remote changes in another branch, and you keep your local files intact.

그럼 다음은?당신은 할 수 있습니다.git merge, 다음과 같은 효과가 있을 것입니다.git pull(이전과 결합된 경우)git fetch, 또는 제가 선호하는 것처럼,git rebase origin/master거스름돈을 위에 얹다origin/master, 더 깨끗한 역사를 보여줄 겁니다

All of the other answers still can have merge conflicts. If you really don't want to deal with conflicts, and simply pull but not overwrite local files with changes the way to do it is like this:

Stash your local changes:

git stash

모든 것을 끌어 당깁니다 (갈등이 생기면 그냥 하세요)git reset --hard HEAD, stash(스캐시)를 사용하여 변경 사항을 저장했습니다.)

git pull --force

Now force apply your stash (no conflicts!)

git checkout stash -- .

ReferenceURL : https://stackoverflow.com/questions/19216411/how-do-i-pull-files-from-remote-without-overwriting-local-files

반응형