2017-09-03 12 views
0

마지막 커밋을 수정하여 내 로컬 커밋 기록을 엉망으로 만들었습니다. 참고로 저는 GIT에 경험이 없습니다. 나는 수정이 git add - all을 실행 취소하는 데 사용되었다고 생각했다. 그래서 스택 오버플로 질문에서 두 명령을 실행했습니다. How to undo "git commit --amend" done instead of "git commit"git 커밋 내역을 복원하는 방법

그러나 해시를 살펴보면 여전히 다릅니다. 소스 코드의 변경 사항을 파괴하지 않고 어떻게 로컬 git 커밋 기록을 github에있는 것으로 리셋 할 수 있습니까?

답변

1

사용 reset --soft HEAD^1 다음 pull origin <branch>

그것은 하나의 로컬 변경을 제거하지 않고 커밋에 의해 머리를 다시 걸릴 것입니다, 다음 역사를 업데이트하기 위해 분기를 가져옵니다. 그 후에는 변경 사항을 새로운 커밋으로 저장하고 항상 수행하는 것처럼 밀어 넣으십시오.

+0

고마워, 나는이 시험을 줄 것이다 ... 나는 또한 다른 방법으로 그것을했다. 부수적으로, 해시가 github과 로컬간에 일치하는 경우, 나는 명확한가? –

+0

이것은 이전 시도의 결과 일지 모르지만, 단지 2 차 커밋을 숨겼습니다. –

+0

해시가 이전에 맹 글링 된 커밋에 대해 일치하는 경우 (github와 함께), 최신 커밋을 푸시 할 수 있습니까? –

0

불행히도 Sinapse의 해결책은 다른 스택 오버 플로우 질문에서 더 많은 명령을 실행하여 가능성을 망가 뜨 렸기 때문에 작동하지 않았습니다.

마지막으로 github에서 다른 복제본을 만들고 .git 폴더를 새로 복제 된 복제본으로 대체 한 다음 올바른 커밋을 계속했습니다 (아직 github에 변경 사항을 적용하지 않았습니다). 두 번째 커밋의 해시 (내가 망친 것)에는 이제 일치하는 해시가 있습니다.

+0

다른 질문을 할 수 없으며 해시가 일치하는지 다른 사람이 알 수 있습니까? 다음 커밋을 푸시 할 수 있습니까? –

+0

방금 ​​매우 위험한 일을했습니다. 내 충고는 이것에 익숙해지지 않는 것입니다. git 명령을 사용하여 기록을 조작하는 항상 깨끗한 방법이 있습니다. 하지만 지금은 당신이 잘하는 것 같아요. – Sinapse