“변경 사항을 커밋하거나 병합하기 전에 숨기십시오”라는 git을 어떻게 해결합니까? 숨기려면 병합하십시오. 그래서 나는 달렸다 git checkout —

로컬 컴퓨터에서 일부 업데이트를 수행하여 원격 리포지토리로 푸시 한 후 서버로 변경 내용을 가져 오려고합니다. 메시지가 나타납니다.

오류 : 다음 파일에 대한 로컬 변경 사항을 병합하여 덮어 씁니다.

wp-content / w3tc-config / master.php

변경 사항을 커밋하거나 숨기려면 병합하십시오.

그래서 나는 달렸다

git checkout -- wp-content/w3tc-config/master.php

다시 시도했는데 같은 메시지가 나타납니다. w3tc서버의 구성 파일에서 무언가 가 변경 되었다고 가정 합니다. 로컬 사본 또는 원격 사본이 서버에 있는지 여부는 상관 없으며 (원격이 가장 좋다고 가정) 나머지 변경 사항 (플러그인 업데이트)을 병합 할 수 있기를 원합니다.

어떤 아이디어?



답변

로컬 수정과 병합 할 수 없습니다. 힘내 당신이 잠재적으로 중요한 변화를 잃지 않도록 보호합니다.

세 가지 옵션이 있습니다.

  • 다음을 사용하여 변경 내용 커밋

    git commit -m "My message"
    
  • 그것을 숨겨라.

    스 태싱은 스택으로 작동하여 변경 사항을 푸시하고 역순으로 팝합니다.

    숨기려면 다음을 입력하십시오.

    git stash
    

    병합을 수행 한 다음 숨김을 당기십시오.

    git stash pop
    
  • 로컬 변경 사항을 폐기하십시오.

    사용 git reset --hard
    또는git checkout -t -f remote/branch

    또는 : 특정 파일에 대한 로컬 변경 사항 삭제

    사용 git checkout filename


답변

git stash
git pull <remote name> <remote branch name> (or) switch branch
git stash apply --index

첫 번째 명령은 변경 사항을 숨김에 임시로 저장 하고 작업 디렉토리에서 변경 사항을 제거합니다.

두 번째 명령은 분기를 전환합니다.

세 번째 명령은 숨김에 저장 한 변경 사항을 복원합니다 ( --index옵션은 준비된 파일이 여전히 준비되도록하는 데 유용합니다).


답변

다음 방법 중 하나를 시도 할 수 있습니다.

리베이스

간단한 변경을 위해 변경 사항을 가져 오는 동안 그 위에 rebase를 시도하십시오.

git pull origin master -r

따라서 가져 오기 후 현재 분기를 업스트림 분기 위에 적용합니다.

이는 checkout master, fetchrebase origin/mastergit 명령 과 같습니다 .

이것은 잠재적으로 위험한 작동 모드입니다. 기록을 다시 작성하므로 기록을 이미 게시했을 때 제대로 표시되지 않습니다. git-rebase(1)주의 깊게 읽지 않으면이 옵션을 사용하지 마십시오 .


점검

로컬 변경 사항에 신경 쓰지 않으면 임시로 다른 분기로 전환하고 (강제로) 다시 전환 할 수 있습니다 (예 :

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

초기화

로컬 변경 사항에 신경 쓰지 않으면 HEAD (원래 상태)로 재설정하십시오.

git reset HEAD --hard

위의 방법으로 도움이되지 않으면 git 정규화 파일 ( .gitattributes)의 규칙 일 수 있으므로 말한 내용을 커밋하는 것이 좋습니다. 또는 파일 시스템이 권한을 지원하지 않으므로 filemodegit config에서 비활성화 해야합니다.

관련 : “git pull”을 사용하여 로컬 파일을 덮어 쓰려면 어떻게합니까?


답변

이 시도

git stash save ""

다시 잡아 당겨


답변

그래서 내가 겪은 상황은 다음과 같습니다.

error : 다음 파일에 대한 로컬 변경 사항은 병합으로 덮어 쓰게됩니다. wp-content / w3tc-config / master.php 변경 사항을 커밋하거나 병합하려면 병합하십시오.

그 직전을 제외하고는 원격이었습니다.

remote : error : 다음 파일에 대한 로컬 변경 사항을 merge로 덮어 씁니다. some / file.ext 병합하기 전에 변경 사항을 커밋하거나 숨기십시오.

무슨 일이 있었는지 (100 % 긍정적이지 않다고 생각합니다) git post receive hook이 시작되고 원격 서버 저장소의 이동 변경으로 인해 망가졌습니다.

그래서 수신 후 후크를 통해 추적하고 이것을 찾아서 결국 서버에서 원격 저장소로 이동해야했고 변경 사항이있었습니다 (사실 로컬 저장소에는 없었습니다. 로컬에있는 동안 서버에 변경이 없었지만 git checkout -- some/file.ext로컬 및 원격 리포지토리가 실제로 일치하여 일치 할 수있었습니다. 계속 작동하고 배포하십시오. 이 상황이 어떻게 발생했는지는 확실하지 않지만, 수십 명의 개발자와 IT 변경은 ​​그와 관련이있을 수 있습니다.


답변

경고 : 이렇게하면 추적되지 않은 파일이 삭제되므로이 질문에 대한 답이 아닙니다.

제 경우에는 파일을 보관하고 싶지 않아서 저에게 효과적이었습니다.

힘내 2.11 이상 :

git clean  -d  -fx .

더 오래된 힘내 :

git clean  -d  -fx ""

참조 : http://www.kernel.org/pub/software/scm/git/docs/git-clean.html

  • -x는 무시할 파일과 git에 알려지지 않은 파일도 제거됨을 의미합니다.

  • -d는 추적되지 않은 파일 외에 추적되지 않은 디렉토리를 제거함을 의미합니다.

  • 강제로 실행하려면 -f가 필요합니다.


답변

이 문제를 해결하면서 새로 만든 파일을 기록하려면 :

새로 만든 파일 이있는 경우 로컬 변경 패치를 만들고 원격 병합을 가져 와서 아래에 단계별로 정의 된대로 원격 병합이 완료된 후 로컬 패치를 적용 할 수 있습니다.

  1. 로컬 변경 사항을 준비하십시오. (커밋하지 마십시오). 새로 작성된 파일의 패치를 작성하려면 스테이징이 필요합니다 (아직 추적되지 않음).

git add .

  1. 기록을 유지하기 위해 패치 만들기

git diff --cached > mypatch.patch

  1. 로컬 변경 사항 삭제 및 새 로컬 파일 삭제

git reset --hard

  1. 풀 변경

git pull

  1. 패치 적용

git apply mypatch.patch

Git은 변경 사항을 병합하고 병합되지 않은 변경 사항에 대한 .rej 파일을 만듭니다.

패치를 적용하는 데 문제가있는 경우 Anu에서 제안한대로 다음을 시도하십시오.

git apply --reject --whitespace=fix mypatch.patch
이 답변 git : patch 이 문제에 대해 자세히 이야기 하지 않습니다

기능에 대한 지속적인 작업을 즐기고 완료되면 로컬 변경 사항을 커밋하십시오.