prosource

로컬 변경 내용이 병합에 의해 덮어쓰기된다는 'git pull' 오류를 무시하려면 어떻게 해야 합니까?

probook 2023. 4. 23. 10:35
반응형

로컬 변경 내용이 병합에 의해 덮어쓰기된다는 'git pull' 오류를 무시하려면 어떻게 해야 합니까?

Git pull에서 다음 에러 메시지를 무시하려면 어떻게 해야 하나요?

다음 파일에 대한 로컬 변경은 병합에 의해 덮어쓰게 됩니다.

덮어쓰려면 어떻게 해야 하나요?

git pull -f도 안 돼요

확실히 하기 위해서, 모든 것을 덮어쓰는 것이 아니라, 특정의 변경만을 덮어씁니다.

git에 의해 추적되지 않은 파일을 포함한 모든 로컬 변경을 작업 복사본에서 제거하려면 해당 변경 사항을 저장하십시오.

git stash push --include-untracked

더 이상 필요하지 않은 경우 저장 공간을 제거할 수 있습니다.

git stash drop

스테이징한 " " 등)git add에 - , , 하다, 하다, 하다, 하다를 추가해주세요.--keep-index단, 스테이징된 변경이 업스트림의 변경과 충돌하는 경우에도 머지는 방지됩니다.


로컬 변경의 특정 부분만 덮어쓰려면 다음 두 가지 방법이 있습니다.

  1. 덮어쓰지 않을 모든 것을 커밋하고 나머지 부분은 위의 방법을 사용합니다.

  2. git checkout path/to/file/to/revert덮어쓰기를 원하는 변경에 대해 선택합니다..git reset HEAD path/to/file/to/revert.

이는 로컬 변경을 모두 덮어쓰는데 도움이 되며 ID는 필요 없습니다.

git reset --hard
git pull

다른 두 가지 답변의 도움을 받아 직접 해결 방법을 생각해냈습니다.

git checkout HEAD^ file/to/overwrite
git pull

여기에 너무 많은 답변이 있어서 다른 답변을 덧붙이는 것은 싫지만, 위의 모든 답변은 필요 이상으로 명확합니다.Git이 혼란스러워하는 것 같아서 항상 이것을 하지 않으면 안 된다(변경하지 않았기 때문에 되돌릴 수 없지만, 변경되었을 가능성이 있기 때문에 풀 수 없다).지금까지 내가 발견한 가장 간단하고 빠른 것은 다음과 같다:

git stash
git stash drop
git pull

주의: 로컬 변경 내용이 손실됩니다.

단계적인 변경을 폐기하는 솔루션은 다음과 같습니다.

git reset file/to/overwrite
git checkout file/to/overwrite

변경은 Marge 전에 커밋하거나 저장할 수 있습니다.

  1. git stash save
  2. git merge origin/master
  3. git stash pop

하나의 파일에 대한 로컬 변경 내용을 폐기하려면 다음을 수행합니다.

git checkout -- <file>

그런 다음 다음 작업을 수행하여 파일을 최신 버전으로 덮어쓸 수 있습니다.

git pull
git pull --rebase --autostash
  -r, --rebase[=false|true|merges|preserve|interactive]
      When true, rebase the current branch on top of the 
      upstream branch after fetching. If there is a 
      remote-tracking branch corresponding to the upstream
  --autostash, --no-autostash
      Before starting rebase, stash local modifications away if
      needed, and apply the stash entry when done

왜 아직 답이 없는지는 모르겠지만 보시다시피 해결책은 간단합니다.모든 변경을 업스트림에 합니다(「」의 로컬 변경을 삭제/저장하여 업스트림에 적용하는 것(사용자가 다음과 같은 경우)save로컬 변경을 맨 위에 적용합니다.

what?git pull --rebase --autostash 바이 스텝: does 、 다 、 다 음 、 does does does does does does does does does does does does 。

1. your local changes saved by `--autostash`
2. your local commits saved by `--rebase`
3. commits from upstream applied to your branch
4. your local commits are restored on top of upstream
5. your local changes are restored to working directory

내 경우(아마도 네 경우도 마찬가지일 것이다):

로컬 변경(작업 디렉토리의 변경):

여기에 이미지 설명 입력

리모트 변경을 풀하려고 하면, 다음의 에러가 표시됩니다.

여기에 이미지 설명 입력

이 변경은 로컬 변경과 교차하지 않습니다.

여기에 이미지 설명 입력

내가 ★★★★★★★★★★★★★★★★★★★★★.pull --rebase --autostash로컬 변경 내용을 문제 없이 자동으로 저장 및 적용

여기에 이미지 설명 입력

이제 로컬 변경은 조금 낮아졌습니다.

에 에서 이 몇 개 되어 있는 master:

  1. git checkout master
  2. git fetch origin
  3. git reset --hard origin/master
  4. git checkout -b newbranch

가끔, 이것들 중 아무 것도 효과가 없어요.귀찮게도 LF라고 생각하기 때문에, 파일을 삭제하고, 꺼내는 것이 효과가 있다고 생각합니다.이 솔루션을 추천하는 것은 아니지만, 파일이 존재하지 않는 경우 git은 변경사항(변경사항도 아닐 수 있음)이 덮어쓰기된다는 것을 쓸데없이 알리지 않고 계속 진행할 수 있도록 합니다.

본인 부담으로 사용하세요.

이거 드셔보세요

git fetch --all 

git reset --hard origin/master

git pull origin master

억지로 끌어당기는 게 제 일이거든요

git stash save --keep-index효과가 없었어요.

다음 명령어는 예상대로 동작했습니다.

git reset --hard
git pull

로컬 변경이 필요 없는 경우 모든 로컬 변경을 덮어씁니다.

Git에서는, 「Git」를 추가할 수 있습니다.-r/--rebasepull취득 후 업스트림브런치 상단에 있는 현재의 브런치를 리베이스로 합니다.경고는 사라지지만 해결해야 할 충돌이 발생할 위험이 있습니다.


다른 다시 ' 확인하다'로 .master예를 들어 다음과 같습니다.

git checkout origin/master -f
git checkout master -f

그런 다음 평소와 같이 다시 당깁니다.

git pull origin master

할 수 .git stash 문제, 파일 「」)git reset HEAD --hard파일 삭제)git clean -fd위의 내용도 기억하기 쉽습니다.

이 문제를 해결하기 위한 저의 전략은 다음과 같습니다.

문제 설명

10월 10살는 시도했다PULL (git pull origin master)깃을 들다

오류: 다음 파일에 대한 로컬 변경 내용을 병합에 의해 덮어씁니다.병합하기 전에 변경 내용을 커밋하거나 저장하십시오.

는 실행하려고 .commit 다음에 또 한 번.pull하지만 둘 다 효과가 없었습니다.

솔루션

파일들이 "Staging Area" "Index Area"에 있고 일부는 "Head Area" "local Git 디렉토리"에 있었기 때문에 우리는 실제로 더러운 단계에 있었습니다.그리고 서버에서 변경 사항을 가져오기를 원했습니다.

Git의 다양한 단계에 대한 명확한 정보는 다음 링크를 확인하십시오: GIT Stage

우리는 다음 단계를 따랐다.

  • git stash(이로 인해 작업 디렉토리가 깨끗해졌습니다.변경 내용은 Git)에 의해 스택에 저장됩니다.
  • git pull origin master.) (서버에서 변경 내용을 가져옵니다.)
  • git stash apply)(「」 「」 「」 「」)
  • git commit -m 'message' 완료 」)
  • git push origin master) ('서버')
  • git stash drop합니다) (스택을 드롭합니다.)

저장해야 할 시기와 이유를 파악합니다.

지저분한 상태일 경우 파일을 변경하고 어떤 이유로든 긴급한 작업을 위해 다른 브랜치로 풀 또는 전환해야 하므로 이 시점에서는 변경을 커밋할 때까지 풀 또는 전환할 수 없습니다.stash명령어는 여기 도움의 손길이 되어 있습니다.

ProGIT, 제2판부터:

프로젝트의 일부를 작업하고 있을 때, 일이 엉망진창이 되어, 브랜치를 잠시 바꿔 다른 작업에 임하고 싶은 경우가 많습니다.문제는 나중에 이 문제로 돌아갈 수 있도록 반쪽짜리 작업을 하고 싶지 않다는 것입니다.이 문제에 대한 답은 git stash 명령어입니다.스태싱은 작업 디렉토리의 더티 상태(변경된 추적 파일 및 단계적 변경)를 가져와 언제든지 다시 적용할 수 있는 완료되지 않은 변경 스택에 저장합니다.

git reset --hard && git clean -df

주의:그러면 추적되지 않은 파일이 리셋되고 삭제됩니다.

이 문제는 사용자가 로컬에서 파일을 변경하고 Git 저장소의 변경과 동일한 파일이 존재하기 때문에 풀/푸시하기 전에 로컬 변경을 저장해야 하기 때문입니다.

단일 파일의 로컬 변경 내용을 덮어쓰려면:

git reset file/to/overwrite
git checkout file/to/overwrite

모든 로컬 변경사항(모든 파일의 변경사항)을 덮어쓰려면:

git stash
git pull
git stash pop

또한 마스터 브랜치와 Marge되지 않은 브랜치에 있는 것도 이 문제의 원인일 수 있습니다.

이것은 라이브 리모트서버의 변경을 파기하고 소스 컨트롤 GitHub에서 꺼내는 데 도움이 되었습니다.

git reset --hard
git pull origin master

파일을 덮어쓸 때 사용할 수 있습니다.

git checkout file_to_overwrite

이 문제를 해결하는 최선의 방법은 다음과 같습니다.

git checkout -- <path/file_name>

그런 다음 다음 파일을 덮어쓸 수 있습니다.

git pull origin master

서버에서 프로덕션 변경 사항을 유지하려면 새 구성 항목으로 병합하십시오.처리방법은 다음과 같습니다.

git stash
git pull
git stash pop

모든 작업을 실행하지는 않을 수도 있습니다.다음에 무엇을 할 수 있는지 알 수 있습니다.

특정 변경을 덮어쓰려면 어떤 변경을 잊어버릴지 알려주는 방법이 필요합니다.

폐기할 변경 내용을 선택적으로 저장할 수 있습니다.git stash --patch그리고 그 은신처를 떨어뜨리고git stash drop그런 다음 원격 변경 내용을 가져와 정상적으로 병합할 수 있습니다.

가장 간단한 해결책은 다음과 같습니다.

git reset --hard && git pull

"다음 파일에 대한 로컬 변경 내용을 병합에 의해 덮어씁니다" 오류는 로컬 repo에서 아직 커밋되지 않은 변경 사항이 있기 때문에 원격 repo에서 꺼내기 전에 로컬 repo에서 변경 내용을 커밋하십시오.

리모트 리포트에 xyz의 브런치가 있고, 그 리모트 리포 xyz 브런치를 로컬 repo xyz 브런치로 Marge(복사) 할 필요가 있다고 합니다.

{
git checkout xyz                  //check out to the respective branch in local repo
git commit -m "commiting message" //commit changes if any, in local repo branch xyz
git pull                          //it pulls remote xyz branch into local xyz branch
}

고객님의 브랜치는 xx 커밋의 'origin/dev'보다 늦기 때문에 빠르게 전달할 수 있습니다.다음 명령을 사용해 보십시오.

git checkout .
git pullenter code here

이것으로 문제가 해결되길 바랍니다.

라고 파일이.파일에 --asume-unchanged 라고 적혀있었어요.요.git status 않았습니다.

[root@localhost www]# git pull
Username for 'http://159.65.151.11': amol
Password for 'http://amol@159.65.151.11':
remote: Counting objects: 34, done.
remote: Compressing objects: 100% (34/34), done.
remote: Total 34 (delta 13), reused 0 (delta 0)
Unpacking objects: 100% (34/34), done.
From http://159.65.151.11/OpenCC
   f793c8e..b8fe60c  v1.18.0_24Feb2022 -> origin/_v1.18.0_24Feb2022
error: Your local changes to the following files would be overwritten by merge:
        cc/routes/web.php
Please, commit your changes or stash them before you can merge.
Aborting

솔루션(로컬 파일의 변경은 이미 무시)

git checkout HEAD^ cc/routes/web.php
git pull

때, 나는 그것을 했을 git pull upstream master하다

오류: myfile.js 다음 파일에 대한 로컬 변경은 병합에 의해 덮어쓰게 됩니다. myfile.js 변경 내용을 커밋하거나 저장하여 병합하십시오.중단 중

그것을 해결하기 위해 나는 다음과 같이 했다.

git update-index --no-assume-unchanged myfile.js

에 제가 했어요.git status 이 를 받았습니다.

브랜치 마스터에서 브랜치는 'origin/master'보다 4커밋 늦고 빠르게 전달할 수 있습니다.(로컬 브런치를 갱신하려면 "pull"을 사용합니다.)

커밋에 대해 스테이징되지 않은 변경: (커밋할 내용을 업데이트하려면 "git add..."를 사용합니다) (작업 디렉토리의 변경 내용을 취소하려면 "git checkout --..."를 사용합니다.)

변경: myfile.displays

커밋에 추가된 변경은 없습니다('커밋 추가' 및/또는 '커밋 -a' 사용).

나서 저는 '아까불까불까불까불까불까불까불까불까불까불까불까불까.git checkout myfile.js에 어 followed가 붙는다.git pull upstream master끌어당기다

이 에러가 회선 엔딩에 기인하는 경우는,

git add
git checkout mybranch

효과가 있습니다.그게 왜 효과가 있는지 잘 모르겠어요.

마스터에서 꺼낼 때 이런 일이 있었어요.

Visual Studio를 사용한 처리 방법

  1. 먼저 솔루션에서 Undo commit을 실행했습니다.
  2. 그리고 Git pull 처리를 했습니다.

이게 도움이 됐으면 좋겠네요!

저는 git에 익숙하지 않아서 제 솔루션이 좋은 아이디어인지 잘 모르겠습니다.

난 모든 답을 테스트해봤지만 하나도 안 통했어!

하지만 다른 해결책을 찾았습니다.

1. Backup both of local and repository versions of the file.
2. Delete the file from repository.
3. git add .
4. git commit
5. git push

이게 도움이 됐으면 좋겠다.

언급URL : https://stackoverflow.com/questions/14318234/how-do-i-ignore-an-error-on-git-pull-about-my-local-changes-would-be-overwritt

반응형