Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

Git 다음 파일에 대한 로컬 변경 사항은 병합 솔루션으로 덮어씁니다.

로컬 시스템에서 수행한 커밋되지 않은 변경 사항과 원격 리포지토리의 내용 간에 충돌이 있는 경우 원격 리포지토리에서 코드를 가져올 수 없습니다. 이렇게 하면 유지하려는 코드를 덮어쓰는 것을 방지할 수 있습니다.

이 가이드에서는 "다음 파일에 대한 로컬 변경 사항을 병합으로 덮어씁니다." 오류와 오류가 발생하는 이유에 대해 설명합니다. 또한 이 오류를 해결하는 방법을 배울 수 있도록 예제를 살펴보겠습니다.

다음 파일에 대한 로컬 변경 사항은 병합으로 덮어쓰여집니다.

리포지토리의 로컬 버전은 원격 리포지토리의 버전과 다른 경우가 많습니다. 이것은 Git의 핵심 기능입니다. 준비가 될 때까지 변경 사항을 원격 저장소로 푸시하지 않고 로컬에서 변경할 수 있습니다.

원격 리포지토리에서 코드를 가져오면 Git은 해당 리포지토리의 내용을 검색하여 로컬 시스템에 저장합니다. 이것은 저장하려는 파일에 대한 모든 변경 사항을 커밋한 경우에만 발생할 수 있습니다.

변경 사항을 먼저 커밋하지 않고 코드를 가져오려고 하면 "다음 파일에 대한 로컬 변경 사항을 병합하여 덮어씁니다." 오류가 표시될 수 있습니다. 이것은 저장소의 원격 버전에서도 변경된 파일을 수정한 경우에만 발생합니다.

예시 시나리오

ck-git이라는 Git 저장소를 수정해 보겠습니다. 먼저 이 저장소의 복사본을 복제해 보겠습니다.

git clone https://github.com/career-karma-tutorials/ck-git

이제 로컬 컴퓨터에 저장소 복사본이 있습니다. 이 리포지토리에는 README.md라는 파일이 하나 있습니다. 그 내용은 다음과 같습니다:

# ck-git

GitHub로 이동하여 서버에서 이 파일을 수정할 것입니다. 이제 파일에 다음 내용이 포함됩니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

# Career Karma Git

로컬 버전의 리포지토리는 이제 원격 버전의 리포지토리에 있는 원본 마스터 브랜치와 다릅니다.

우리 버전에는 코드를 가져올 때 원격 저장소에 있던 코드가 포함되어 있습니다. 원격 저장소에는 README.md에 대한 변경 사항이 포함되어 있습니다.

이제 로컬 시스템에서 README.md를 변경한다고 가정해 보겠습니다.

# CK Git

파일을 변경했습니다. 이제 원격 저장소에 대한 변경 사항을 가져와 로컬 시스템에 저장할 수 있도록 합시다.

git pull

이 명령은 오류를 반환합니다.

...
Updating a30b784..ec281fc
error: Your local changes to the following files would be overwritten by merge:
    README.md
Please commit your changes or stash them before you merge.
Aborting

간결함을 위해 이 명령의 응답을 줄였습니다. 우리가 집중해야 할 메시지는 "다음 파일에 대한 로컬 변경 사항은 병합으로 덮어쓸 것입니다."입니다.

솔루션

이제 파일 사본이 두 개 있습니다. 하나는 로컬 시스템에 있고 다른 하나는 원격 저장소에 있습니다. 원격 리포지토리에서 코드를 가져올 때 Git은 어떤 버전의 파일을 유지해야 하는지 확신하지 못합니다.

이 오류를 해결하기 위해 코드를 숨기거나 코드를 커밋할 수 있습니다.

코드를 커밋하기 위해 README.md 파일을 커밋에 추가하고 해당 파일을 포함하는 커밋을 만들 수 있습니다.

git add README.md
git commit -m "docs: Update README.md"

이렇게 하면 로컬 시스템에서 README.md에 대한 변경 사항이 프로젝트의 커밋 기록에 추가됩니다. 이제 Git은 이러한 변경 사항을 유지하기를 원한다는 것을 알게 될 것입니다.

두 번째 해결책은 변경 사항을 숨기는 것입니다. 이렇게 하면 나중에 볼 수 있도록 변경 사항을 저장할 수 있습니다. git stash 명령을 사용하여 코드를 숨길 수 있습니다.

git stash

이 명령은 변경 사항을 숨김에 저장합니다(저희 코드는 나중에 사용할 수 있도록 "숨겨져 있습니다"). 이제 코드를 숨겼으므로 원격 저장소에서 코드를 안전하게 가져올 수 있습니다.

git stash pop

Git stash의 코드는 git stash pop 명령을 실행하여 볼 수 있습니다. 이렇게 하면 저장소에 커밋하지 않은 파일 변경 사항을 확인할 수 있습니다. 이는 나중에 파일에 대한 변경 사항을 커밋하기로 결정한 경우 그렇게 할 수 있음을 의미합니다.

결론

"다음 파일에 대한 로컬 변경 사항은 병합으로 덮어쓰여집니다." 오류는 원격 리포지토리를 로컬 리포지토리 버전의 내용과 충돌하는 내용을 가진 로컬 시스템으로 가져오려고 할 때 발생합니다.

이 오류를 수정하려면 나중에 변경 사항을 저장하거나 변경 사항을 커밋하십시오. 이제 전문가처럼 이 오류를 수정하는 데 필요한 지식을 얻었습니다!