기존 원격 저장소에 새 git 저장소를 설정하려고합니다.
내 로컬 파일이 원격 저장소를 덮어 쓰길 원하지만 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
두 단계의 작업이다 비파괴 git fetch
a로 하였다는 git merge
. ‘git pull’과 ‘git fetch’의 차이점 은 무엇입니까?를 참조하십시오 . 더 많은 토론을 위해.
자세한 예 :
저장소가 다음과 같다고 가정합니다 (변경했습니다 test2
.
* ed0bcb2 - (HEAD, master) test2
* 4942854 - (origin/master, origin/HEAD) first
그리고 origin
저장소는 다음과 같습니다 (다른 사람이 커밋했습니다 test1
).
* 5437ca5 - (HEAD, master) test1
* 4942854 - first
이 시점에서 git은 불만을 제기하고 test2
원격 저장소 로 푸시하려고하면 먼저 풀을 요청 합니다. 로컬 저장소를 수정하지 않고 test1이 무엇인지 확인하려면 다음을 실행하십시오.
$ git fetch
결과 로컬 저장소는 다음과 같습니다.
* ed0bcb2 - (HEAD, master) test2
| * 5437ca5 - (origin/master, origin/HEAD) test1
|/
* 4942854 - first
이제 다른 분기에 원격 변경 사항이 있으며 로컬 파일은 그대로 유지합니다.
그럼 다음은? 를 수행 할 수 있습니다 git merge
. 이는 git pull
이전과 결합했을 때와 동일한 효과를 나타내 git fetch
거나, 내가 선호하는 git rebase origin/master
대로 변경 사항을 위에 적용하여 origin/master
더 깨끗한 기록을 제공합니다.