2014-02-28 3 views
1

나는 더러운 작업 디렉토리를 가지고 있었고 git stash save -p을 사용하여 일부 변경 사항을 숨기려고했다. 내 의도는 큰 커밋이었던 것을 두 개의 더 작은 커밋으로 분리하는 것입니다. 문제는 지금 내가 우연히 틀린 썽크를 숨겨서 다시 해보고 싶다는 것입니다. this question에서 제안하지만, 그 일을하는 것은 나에게이 오류주기 때문에 내가하는 git stash pop을하고 시도 : 나를 위해어떻게 부분 자식 숨김을 실행 취소합니까?

error: Your local changes to the following files would be overwritten by merge: 
    my_file.js 
Please, commit your changes or stash them before you can merge. 
Aborting 

답변

2

을, 다음은 충분했다 :

% git add myfile.js 
% git stash pop 
% git reset myfile.js 

가 또는 팝업 후, myfile.js를 저지를 숨겨서 충돌을 해결하십시오. 더미 커밋을 제거하려면 git reset --soft HEAD^. 다음과 같이하십시오 :

% git add myfile.js 
% git commit 
% git stash pop 
    # resolve conflicts if needed 
% git reset --soft HEAD^ 

--soft 의미는 작업 트리 또는 색인을 만지지 마십시오. HEAD^은 마지막 커밋 직전의 커밋을 의미합니다. 지금까지 눈치 적이 있지만

이 매뉴얼은 실제로이 문제를 언급 :

pop [--index] [-q|--quiet] [<stash>] 

Remove a single stashed state from the stash list and apply it on top of the current working tree state, i.e., do the inverse operation of git stash save . The working directory must match the index.

(강조 광산) 우리가 git add을 수행 할 때, 우리는 인덱스의 원인과 일치하도록 작업 디렉토리를하고 (둘 다 은닉되지 않은 변경 사항을 포함하고 있습니다). 마찬가지로, 커밋을 생성하면 일치합니다. (둘 다 변경 사항 없음)

관련 문제