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

Git 다음 파일에 대한 로컬 변경 사항은 체크아웃 솔루션에서 덮어씁니다.

파일을 커밋하거나 숨김 없이 두 분기에서 파일을 수정하고 해당 분기 간에 전환할 수 없습니다. Git은 어떤 변경 사항을 저장해야 하고 어떤 변경 사항을 덮어써야 하는지 확신하지 못하기 때문입니다.

이 가이드에서는 "다음 파일에 대한 로컬 변경 사항을 체크아웃 시 덮어씁니다." 오류와 그 의미에 대해 설명합니다. 이 오류를 수정하는 방법을 알아낼 수 있도록 예제를 살펴보겠습니다.

다음 파일에 대한 로컬 변경 사항을 체크아웃 시 덮어씁니다.

Git 버전 제어를 사용하면 분기라고 하는 별도의 개발 라인을 유지할 수 있습니다. 한 분기의 변경 사항은 두 분기를 병합하지 않는 한 다른 분기에 반영되지 않습니다.

분기로 이동하면 기록의 특정 시간에 저장소를 보고 필요한 변경을 수행할 수 있습니다. Git이 프로젝트의 발전을 추적할 수 있도록 준비가 되면 변경 사항을 커밋해야 합니다.

두 분기에 커밋되지 않은 파일 변경 사항이 포함되어 있으면 두 분기 간에 전환할 수 없습니다. Git은 파일을 저장해야 하는지 아니면 커밋의 일부로 저장해야 하는지 알아야 합니다. 이렇게 하면 나중에 다시 참조할 수 있는 코드를 실수로 덮어쓰는 것을 방지할 수 있습니다.

예시 시나리오

README.md라는 파일이 포함된 저장소를 복제할 것입니다.

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

README.md 파일의 내용은 다음과 같습니다.

# ck-git

저장소에는 개발 및 마스터라는 두 가지 분기가 있습니다. 로컬 작업 디렉토리에서 원본 마스터 브랜치의 README.md 파일을 변경할 것입니다.

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

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

# Career Karma Git

마스터 브랜치는 이제 원격 저장소와 다릅니다. 우리는 개발 브랜치로 전환하고 README의 내용을 다음과 같이 변경할 것입니다.

# Career Karma [Development]

다음 명령을 실행하여 개발 분기에서 이 파일을 변경할 수 있습니다.

git checkout development
nano README.md

다음으로, 마스터 브랜치로 다시 전환하고 브랜치에 대한 변경 사항을 커밋하고 원격 저장소로 푸시합니다.

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

git checkout 명령을 사용하면 마스터 브랜치로 전환할 수 있습니다. 검토 결과 이제 원격 저장소에 다음이 포함됩니다.

  • 개발 브랜치의 수정된 README.md
  • 한 커밋보다 앞선 마스터 브랜치

이제 마스터 브랜치에서 README.md를 다시 수정해 보겠습니다.

# Tutorials

이는 두 분기에 원격 마스터 분기 간의 차이점이 포함되어 있음을 의미합니다. 다음 변경 사항이 적용된 개발 분기로 전환해 보겠습니다.

git checkout development

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

error: Your local changes to the following files would be overwritten by checkout:
    README.md
Please commit your changes or stash them before you switch branches.
Aborting

해결책

개발 및 마스터 분기에는 커밋되지 않은 변경 사항이 포함되어 있으므로 Git은 체크아웃을 진행할 수 없습니다. Git이 계속되면 마스터 브랜치에서 README.md에 대한 커밋되지 않은 변경 사항이 저장되지 않습니다.

두 가지 방법으로 이 오류를 수정할 수 있습니다. 먼저 마스터 브랜치에서 변경 사항을 커밋할 수 있습니다.

git add README.md
git commit -m "docs: Add tutorials message to README.md file"
git push

이 명령에서 README.md 파일을 스테이징 영역에 추가하고, 스테이징 영역의 모든 파일을 커밋에 추가하고, 변경 사항을 원격 리포지토리에 푸시합니다.

이제 Git에는 README.md 파일이 변경 사항과 함께 표시되는 방식에 대한 기록이 있습니다.

또는 나중에 변경 사항을 숨길 수 있습니다. 이것은 커밋에 변경 사항을 추가할 준비가 되지 않았을 때 나중에 변경 사항에 액세스할 수 있도록 하려는 경우에 좋은 솔루션입니다. 변경 사항을 숨기려면 git stash 명령을 실행할 수 있습니다.

git stash save README.md

이것은 README.md 파일을 숨김에 저장합니다. 이 파일을 다시 방문할 준비가 되면 stash pop 명령을 사용하여 stash에 액세스할 수 있습니다.

git stash pop

이 명령은 저장소의 README.md 파일을 복원합니다. "Stashing"은 "나중을 위해 저장"을 말하는 또 다른 방법입니다. Stash는 변경 사항에 대한 커밋을 생성하지 않습니다.

위의 솔루션 중 하나를 실행하면 개발 분기로 성공적으로 이동할 수 있습니다.

git checkout development

이 명령은 분기를 "개발"로 전환하고 터미널에서 이 변경 사항을 알려줍니다.

Switched to branch 'development'

문제를 해결했습니다.

결론

Git "다음 파일에 대한 로컬 변경 사항은 체크아웃 시 덮어씁니다." 오류는 해당 변경 사항을 커밋하거나 숨김 없이 두 브랜치에서 변경하고 브랜치 사이를 탐색하려고 할 때 발생합니다.

나중에 변경 사항을 숨기거나 커밋에 추가하여 이 문제를 해결할 수 있습니다.

이제 전문가처럼 이 오류를 수정하는 데 필요한 지식을 얻었습니다!