Computer >> 컴퓨터 >  >> 문제 해결 >> Linux

Git 오류를 수정하는 방법 '다음 파일에 대한 로컬 변경 사항은 병합으로 덮어씁니다.'

오류 메시지 "다음 파일에 대한 로컬 변경 사항을 병합으로 덮어씁니다. "는 Git 버전 제어 메커니즘에서 발생합니다. 이 오류는 원격 저장소에도 수정 사항이 있는 파일을 수정한 경우 발생합니다.

Git 오류를 수정하는 방법  다음 파일에 대한 로컬 변경 사항은 병합으로 덮어씁니다.

원격 리포지토리에도 수정 사항이 있는 커밋되지 않은 파일이 없으면 이 오류 메시지가 표시되지 않습니다. 이 메시지가 표시되면 다른 팀원들과 상의하여 의견을 구하는 것이 가장 좋습니다. 로컬 변경 사항을 병합하거나 리포지토리에 있는 버전을 유지하려는 경우 모든 사람을 계속 참여시키는 것이 가장 좋습니다.

저장소란 무엇입니까? Git에서 푸시 및 풀이란 무엇입니까?

리포지토리는 GitHub 버전 제어 메커니즘을 통해 팀 구성원이 지속적으로 수정하고 획득하는 일종의 코드 저장소입니다. '당기기' 최신 버전의 저장소를 Pycharm 등과 같은 로컬 저장소/IDE(통합 개발 환경)로 가져오고 있음을 의미합니다.

풀 후 코드를 변경하거나 더 많은 기능을 추가합니다. 완료되면 '푸시' 코드를 저장소에 저장하여 변경 사항이 저장되고 추가됩니다. 다른 사람들도 코드에 액세스할 수 있습니다.

Github 버전 관리가 처음이라면 모든 기본 사항을 먼저 살펴보는 것이 좋습니다. 이 기사에서는 귀하가 이미 기본 지식을 갖고 있고 모든 내용을 알고 있다고 가정합니다.

'다음 파일에 대한 로컬 변경 사항을 병합으로 덮어씁니다'를 수정하는 방법은 무엇입니까?

이 오류 메시지의 해결 방법은 수행하려는 작업에 따라 다릅니다. 로컬 변경 사항을 버리고 저장소의 변경 사항을 가져오거나 로컬 변경 사항을 숨김에 저장하고 저장소에서 버전을 가져올 수 있습니다. 그것은 모두 귀하의 선호도에 달려 있습니다.

따라서 팀 구성원과 상의하고 모두가 같은 페이지에 있는지 확인하는 것이 좋습니다. 앞으로 나아가기 전에. 잘못 커밋하거나 잘못된 버전을 푸시하면 전체 팀에 영향을 미칠 수 있습니다.

방법 1:강제로 로컬 변경사항 덮어쓰기

로컬에서 수행된 변경 사항에 신경 쓰지 않는 경우 저장소에서 코드를 가져오려면 강제로 끌어올 수 있습니다. 이렇게 하면 컴퓨터에서 수행된 모든 로컬 변경 사항을 덮어쓰게 됩니다. 저장소에 있는 버전의 복제본이 나타납니다.

IDE에서 다음 명령을 실행하십시오.

git reset -- hard

git pull

이렇게 하면 모든 로컬 변경 사항이 즉시 삭제되므로 현재 수행 중인 작업을 알고 있으며 로컬 변경 사항이 필요하지 않은지 확인하세요.

방법 2:두 변경 사항 모두 유지(로컬 및 저장소에서)

두 변경 사항(로컬로 수행된 변경 사항 및 저장소에 있는 변경 사항)을 모두 유지하려면 변경 사항을 추가하고 커밋할 수 있습니다. 당기면 분명히 병합 충돌이 발생합니다. 여기에서 IDE의 도구(예:Difftool 및 mergetool)를 사용하여 두 코드 조각을 비교하고 유지할 변경 사항과 제거할 변경 사항을 결정할 수 있습니다. 이것은 중간 방법입니다. 수동으로 제거할 때까지 변경 사항은 손실되지 않습니다.

git add $the_file_under_error

git commit

git pull

병합 충돌이 발생하면 충돌 해결 도구를 띄우고 한 줄씩 확인하십시오.

방법 3:두 변경 사항을 모두 유지하되 커밋하지 않음

이 상황은 개발자가 디버깅 중인 일부 깨진 코드가 있기 때문에 커밋할 준비가 되지 않은 경우에 발생합니다. 여기에서 변경 사항을 안전하게 숨기고 저장소에서 버전을 가져온 다음 코드를 숨길 수 있습니다.

git stash save --keep-index

또는

git stash
git pull

git stash pop

숨김을 팝한 후 충돌이 있는 경우 일반적인 방법으로 해결해야 합니다. 다음 명령을 사용할 수도 있습니다.

git stash apply

충돌로 인해 숨겨진 코드를 잃을 준비가 되지 않은 경우 pop 대신

병합이 실행 가능한 옵션처럼 보이지 않으면 리베이스를 고려하십시오. 리베이스는 커밋 시퀀스를 새로운 기본 커밋으로 이동하거나 결합하는 프로세스입니다. rebase하는 경우 코드를 다음과 같이 변경합니다.

git stash

git pull --rebase origin master

git stash pop

방법 4:코드의 '특정' 부분 변경

코드의 특정 부분을 변경하고 모든 것을 교체하고 싶지 않다면 커밋 할 수 있습니다. 덮어쓰고 싶지 않은 모든 항목은 방법 3을 따릅니다. 저장소에 있는 버전에서 덮어쓰려는 변경 사항에 대해 다음 명령을 사용할 수 있습니다.

git checkout path/to/file/to/revert

또는

git checkout HEAD^ path/to/file/to/revert

또한 다음을 통해 파일이 준비되지 않았는지 확인해야 합니다.

git reset HEAD path/to/file/to/revert

그런 다음 pull 명령을 진행합니다.

git pull

그런 다음 저장소에서 버전 가져오기를 시도합니다.