힘내 : 로컬 변경 사항을 취소 할 수 없습니다 (오류 : 경로 ... 병합되지 않음)


337

작업 트리 상태를 따르고 있습니다.

$ git status foo/bar.txt
# On branch master
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#       deleted by us:      foo/bar.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

파일 foo/bar.txt이 있고 다시 "변경되지 않은 상태"로 가져오고 싶습니다 ( 'svn revert'와 유사).

$ git checkout HEAD foo/bar.txt
error: path 'foo/bar.txt' is unmerged
$ git reset HEAD foo/bar.txt
Unstaged changes after reset:
M       foo/bar.txt

이제 혼란스러워지고 있습니다.

$ git status foo/bar.txt
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   foo/bar.txt
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   foo/bar.txt
#

새로운 섹션 수정 된 섹션 모두에 동일한 파일이 있습니까? 어떻게해야합니까?


7
누군가 우리 가이 상황에 어떻게 대처 하는지 , 발생 하는지 , 솔루션이 작동하는지 설명 할 수 있기를 바랍니다 .
Marcos Dione

1
병합 충돌로 나를 데려 간 rebase 후 내 숨김을 팝했을 때이 상황에 도달했습니다 (스 태쉬 팝이 병합합니다) ... 변경 사항은 여전히있었습니다 .... 그들을 제거합니다 .. 파일에서 다시 체크 아웃을 시도했습니다. 그 때 위의 오류가 나타났습니다.
Arindam Roychowdhury

답변:


556

당신은 잘못 돌아 왔습니다. 먼저 재설정하고 파일의 스테이지를 해제 한 다음 체크 아웃하여 로컬 변경 사항을 되 돌리십시오.

이 시도:

$ git reset foo/bar.txt
$ git checkout foo/bar.txt

감사; 매력처럼 일했다! 나는 (커밋했다 되지 는 -a 인수와 함께, 관련 변화가 이미 개최되었다) 그리고 나는 정상처럼 / 풀을 밀어 수 있었다.
Patrick

18
나에게 필요한 것은 <br/> $ git reset-foo / bar.txt <br/> $ git checkout-foo / bar.txt <br/> (사이에 여분의 "-"를 통지)
1

4
좋은 문법은 "git reset HEAD file1 file2 ..."그리고 "git checkout-file1 file2 ..."
Thomas Decaux

1
가장 높은 투표 응답이 기본적으로 "당신이 잘못하고 있습니다"라고 말할 때 항상 재미 있습니다 :)
nathanchere

4
설명이 훌륭했을 것입니다…
Kissaki

51

이것은 나를 위해 완벽하게 작동했습니다.

$ git reset -- foo/bar.txt
$ git checkout foo/bar.txt

14
git checkout origin/[branch] .
git status

// 끝에 점 (.)이 표시됩니다. 그리고 모든 것이 좋을 것입니다


-2
git checkout foo/bar.txt

당신은 그것을 시도 했습니까? (HEAD 키워드없이)

나는 보통 이런 식으로 변경 사항을 되돌립니다.


1
checkout병합 중에 시도 할 때 일반적인 오류 : $ git co path/to/file= result => error: path 'path/to/file' is unmerged => 따라서 먼저 실행하십시오 : $ git reset path/to/file, 그러면 git checkout path/to/file작동합니다.
michael

2
HEAD를 지정하지 않으면 인덱스에서 git checkout 체크 아웃이 수행되는데 이는 조작이 약합니다 (컨텐츠 소스는 HEAD가 아닌 인덱스입니다). 또한 나는 그것이 문제가 언급 한 특정 문제와 함께이 경우에 전혀 차이가 있다고 생각하지 않습니다. 나요 당신은 그것을 시도?
Kissaki

-4

나는 찾을 자식 숨겨 놓은 모든 '더러운'상태의 시간 처리에 매우 유용합니다.


4
유용하다고 생각되면이 구체적인 사례에서 어떻게 도움이되는지 설명하십시오. 여기서 어떻게 사용 하시겠습니까?
Kissaki
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.