2010-06-11 3 views
229

내가 작업 트리 상태 다음 한 (오류 ... 경로 것은 병합입니다)힘내 : 로컬 변경 실행 취소 할 수 없습니다 :

$ 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의 되돌리기'와 유사)이 :

$ 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 
# 

두 섹션의 같은 파일을, NE w 이 수정 되었습니까? 어떻게해야합니까?

+1

나는 누군가가 우리가이 상황에 들어가 어떻게 설명 할 수 소원, * 왜 * 그런 일이, 왜이 솔루션은 작동합니다. –

답변

389

잘못된 방향으로 시도했습니다. 먼저 재설정하여 파일을 언 스토크 한 ​​다음 체크 아웃하면 로컬 변경 사항을 되돌릴 수 있습니다.

이 시도 :

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

감사합니다. 매력처럼 일 했어! 나는 (-a arg와 함께 _not_, 관련된 변경이 이미 수행 되었음) 커밋해야만했다. 그런 다음 정상적으로 밀거나 당길 수 있었다. – Patrick

+15

저에게있어 :
$ git reset - foo/bar.txt
$ git checkout - foo/bar.txt
(사이에 여분의 "-"가 있음) – Jan

+0

git reset reset * 모든 * 나열된 파일뿐만 아니라 파일. 내가 잘못 했습니까? – Zds

-3
git checkout foo/bar.txt 

시도해 보셨습니까? (HEAD 키워드 없음)

나는 보통 이렇게 변경합니다.

+0

병합 중간에'checkout '을 할 때 일반적인 오류가 발생했습니다 : '$ git co path/to/file' = 결과 => 오류 : 경로'path/to/file '이 병합되지 않았습니다. => so 먼저'$ git reset path/to/file'을 실행하면'git checkout path/to/file'가 작동합니다. – michael

+0

HEAD를 지정하지 않으면 인덱스에서 git checkout을 체크 아웃합니다 (이는 컨텐츠 소스가 HEAD가 아닌 인덱스 임). 더구나 나는 그것이이 문제에 전혀 영향을 미치지 않는다고 생각한다. 그걸 시도 했니? – Kissaki

-4

내가 모든 '더러운'상태의 시간 처리를위한 매우 유용한 git stash을 찾을 수 있습니다.

+4

변경 사항을 병합 해제 한 후에는 숨김이 작동하지 않음 – Rob

+3

유용하다고 생각되면이 구체적인 경우에 도움이되는 방법에 대한 설명을 제공하십시오. 여기 어떻게 사용 하시겠습니까? – Kissaki

9
git checkout origin/[branch] . 
git status 

// 끝에 점 (.)이 표시됩니다. 그리고 모든이가 나를 위해 완벽하게 작동

21

좋은 것 :

$ git reset -- foo/bar.txt 
$ git checkout foo/bar.txt 
관련 문제