2015-01-22 6 views
0

많은 파일을 변경하고 Git 준비 영역에 추가했습니다. 그런 다음 커밋하기 전에 이전 커밋의 커밋 메시지를 변경해야한다는 것을 알게되었습니다. 그래서 git commit --amend을 수행하고 변경 로그를 통하지 않고 커밋 메시지를 변경했습니다. 음, 준비 영역의 파일을 이전 커밋에 추가했습니다.git도 준비 영역에 추가 된 파일을 수정합니다.

이전 커밋을 원래 형식으로 만들고 변경된 파일을 준비 영역에서 다시 가져 와서 별도로 커밋 할 수 있도록하려면 어떻게해야합니까?

가치가있는 부분에 대해서는 먼저 변경 사항을 커밋 한 다음 git rebase -i을 사용하여 커밋 메시지 기록을 변경해야한다는 것을 알고 있습니다.

+0

변경 사항이 변경되지 않았습니까? –

+0

@ JosephK.Strauss 아니요, 아닙니다. – darkryder

+0

당신은 여전히 ​​이전 커밋의 커밋 ID를 가지고 있습니까? 이 경우 * 체크 * 아웃 * 할 수 있습니다. – opatut

답변

2

당신은, 그이 후

git reset --soft <SHA1> 

를 사용하여 이전 상태의에 현재 브랜치를 되돌릴 수, 이전의 이전 상태의 SHA1이 해시를 사용

git reflog 

사용하여 커밋 찾을 수 있습니다 변경 내용을 숨긴 다음 git commit --amend을 실행하여 커밋 메시지를 변경할 수 있습니다.

+0

고마워 :) 언젠가 앉아서 며칠을 쉬고 자식에 관한 모든 것을 읽을거야. 언젠가. – darkryder

1

reflog에있는 커밋 ID의 값에 따라 다음을 수행하십시오.

git reflog -5 #I assume this will be good enough; increase the value as needed 
git reset --hard <commit-with-bad-message> 
git commit --amend -m '<New message>' 
git read-tree --reset -u <commit-that-had-extra-files> 

이제 이전에 원했던 위치에 있어야합니다. 작업을 계속하십시오.