Git stash pop- 병합이 필요하며 인덱스를 새로 고칠 수 없습니다.


116

내 보관함과 충돌하는 분기를 병합하여 내 보관함을 열 수 없습니다. 이제 내 보관함을 열 수없는 것 같습니다.

app.coffee: needs merge
unable to refresh index

누구든지 이것을 해결하는 방법을 알고 있습니까?

결정된!

실제 문제는 병합에서 해결되지 않은 병합 충돌이었고 숨김으로 인해 병합 충돌이 발생한다는 것이 아닙니다 .

해결 방법 : 충돌 된 파일을 커밋합니다.


6
수용된 답변이 복잡 하지만 실제 솔루션은 매우 쉽다 는 점이 흥미 롭습니다 . 충돌하는 파일을 커밋 할 필요도없이 추가 할 수 있습니다.
Javi V

3
질문에없는 답변으로 답변을 추가하십시오.
Black

답변:


67

먼저 git status.
OP에서 언급했듯이

실제 문제는 병합에서 해결되지 않은 병합 충돌이었으며 숨김으로 인해 병합 충돌이 발생한다는 것이 아닙니다.

여기에서 git status해당 파일을 " both modified" 로 언급합니다.

해결 방법 : 충돌 된 파일을 커밋합니다.


4 일 전이 답변 (2012 년 3 월 13 일) 을 작성했을 때 다음 게시물을 통해 비슷한 상황을 찾을 수 있습니다 . " '파일 병합을 해제했기 때문에 풀이 불가능합니다.' ":

julita@yulys:~/GNOME/baobab/help/C$ git stash pop
help/C/scan-remote.page: needs merge
unable to refresh index

당신이 한 일은 병합 충돌을 수정하는 것이 었습니다 (올바른 파일을 편집하고 커밋) :
" Git에서 병합 충돌을 어떻게 수정합니까? "를 참조하십시오.

블로그 게시물 작성자가 한 일은 다음과 같습니다.

julita@yulys:~/GNOME/baobab/help/C$ git reset --hard origin/mallard-documentation
HEAD is now at ff2e1e2 Add more steps for optional information for scanning.

즉, 현재 병합을 완전히 중단하여을 git stash pop적용 할 수 있습니다.
" Git에서 병합 중단 "을 참조하십시오 .

두 가지 옵션이 있습니다.


1
때로는 우리가 다른 지점에있는 경우도 있습니다. 예를 들어, 나는 분기 A가 있고 일부 변경하고 분기 B로 전환하여 변경하고 커밋했습니다. 이제 A 지점으로 가고 싶지만 A에서 결제하고 은닉을 적용하는 것을 잊었습니다. 이 경우에도 동일한 문제가 발생합니다. 위의 경우이 문제에 직면했습니다.
Kapil Verma

나는 모든 것을 다했지만 'git bash pop'은 그 충돌을 다시 가져옵니다. 나는 현재 bach를 변경하고 싶지 않을 때 어차피 커밋해야하는 이유를 알지 못합니다. 그냥 숨긴 지점으로 돌아가고 싶어요.
Philip Rego

@PhilipRego git bash pop? 또는 git stash pop? git stash를 사용하는 대신 stash를 확인하십시오. stackoverflow.com/a/16625128/6309
VonC

죄송합니다 'git stash pop'을 의미했습니다. 이미 은닉을 떨어 뜨 렸지만 다음에이 문제가 발생하면 시도해 보겠습니다. 감사합니다
Philip Rego 2018

14

나는이 문제를 겪고 있었고 충돌을 해결하고 커밋하고 git stash pop다시 동일한 숨김을 다시 복원했습니다 (동일한 충돌을 일으켰습니다 :-().

내가해야 할 일은 (경고 : 먼저 숨겨둔 물건을 백업) git stash drop그것을 제거하는 것입니다.


4
내 은닉처가 없어 졌어요. 다시 돌아가고 싶었습니다.
Philip Rego

3
이것이 내가 필요로하는 대답이지만 이것을 보는 다른 사람들에게는 숨겨둔 변경 사항을 잃게 될 것입니다. 이것은 첫 번째 숨김에 문제가 있지만 더 깊은 두 번째 수준 숨김 변경 사항을 적용하기 위해 첫 번째 숨김을 제거하려는 경우 유용합니다.
Corey Schnedl

8

받아 들여진 대답보다 훨씬 간단합니다. 다음을 수행해야합니다.

  1. git status아래 경로를 확인 하고 병합 해제하십시오. 충돌을 수정하십시오. 나중에 수행하려는 경우이 단계를 건너 뛸 수 있습니다.

  2. 병합되지 않은 경로 아래에있는 모든 파일을 git add <filename>.

  3. 이제 git stash pop. 충돌이 발생하면 다시 해결해야합니다.


6
이것은 계속해서 같은 갈등으로 이어집니다.
NaN

7

문제를 해결 한 방법은 다음과 같습니다.

  • git 상태 (이전 숨김, 풀, 숨김 팝 및 계속 작업의 파일 혼합 참조)
  • git stash (필요한 병합 문제 참조)
  • git add. (내 작업이 로컬로 병합되도록 파일을 추가하십시오)
  • git stash (오류 없음)
  • git pull (오류 없음)
  • git stash pop (오류 없음 및 계속 작업)

1
고마워 ! 이것은 나를 도와줍니다.
Julien Baldy

1
git add .저를 위해 문제를 해결하지 않고 우수 합니다.
Paul Carlton

5

병합 / 충돌 / 작업 외부에서이 문제가있는 사람이 있다면 문제를 일으키는 프로젝트의 git 잠금 파일 일 수 있습니다.

git reset
     fatal: Unable to create '/PATH_TO_PROJECT/.git/index.lock': File exists.
rm -f /PATH_TO_PROJECT/.git/index.lock
git reset
git stash pop

1
reset명령 이 무서워요 이것이 작동하는 이유를 설명해 주시겠습니까?
SMBiggs 2015

1

나는 가장 좋은 해결책은 당신의 은신처를 분리하고 나중에 해결하는 것임을 발견했습니다.

git stash branch <branch-name>

보관함을 지우면 변경 사항을 잃을 수 있으며 다시 로그인해야합니다.


1

app.coffee스테이징 에 추가해야합니다 .

수행 git add app.coffee(커밋하고 푸시 후 해당) 다음은 감춰을 적용 할 수있을 것입니다.


0

숨김이 이미 다른 파일에 적용되었습니다.

그것은 아니라 app.coffee수동으로 병합해야 할 것이다. 나중에 그냥 실행

자식 재설정

변경 사항을 해제하고 해킹을 계속합니다.


0

내 개발 브랜치에서 약간의 변경을 수행 한 다음 프로필 브랜치로 이동하고 싶기 때문에 동일한 문제에 직면했습니다. 그래서 나는 변경 사항을 숨겼습니다.

git stash

그런 다음 프로필 브랜치에서 몇 가지 변경 사항을 수행 한 다음 다시 개발로 돌아와서 변경 사항을 다시 숨겨야합니다.

 git stash

하지만 내가 브랜치를 개발하러 왔을 때

git stash apply

그래서 나는 오류가 발생했습니다.

이 문제를 해결하려면 먼저 숨김 목록을 확인해야합니다.

git stash list

그래서 제 경우에는 보관함 목록이 표시됩니다. 보관함의 이름이 다음과 같이 표시되는 보관함이 2 개있었습니다. stash @ {0}, stash @ {1}

stash @ {1}에서 변경이 필요하므로이 명령으로 가져 오려고 할 때

git stash apply stash@{1}

그래서 오류가 발생했습니다.

이제이 문제를 해결하려면 파일 상태를 확인하십시오.

git status

그래서이 실행을 해결하기 위해 "둘 다 수정"이라는 오류가 발생했습니다.

git add .

이제 누락 된 수정 된 파일을 추가합니다. 상태를 다시 확인합니다.

git status 

이제 오류가 없으므로 숨김을 적용 할 수 있습니다.

git stash apply stash@{1}

여러 숨김 파일에 대해이 프로세스를 수행 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.