새 커밋을 만드는 대신 실수로 커밋 커밋을 수정했습니다. 이제는 내가 할 수있는 정상적인 커밋에 대한 변경 사항을 추출하는 방법을 모르겠습니다. 변경 사항은 gitk에 나타나지만 format-patch에는 나타나지 않습니다. 도와주세요.힘내 : 커밋을 병합하도록 수정 된 변경 내용을 복원
2
A
답변
3
원본 병합 커밋과 수정 된 병합 커밋이 여기에 관심있는 2 개의 SHA가 있습니다. 인덱스와 작업 디렉토리를 유지하면서 원래 머지 커밋에 HEAD
을 입력하고 git reset
을 수행하려고합니다. 그런 다음 병합 커밋에 매달린 새 커밋을 만들 수 있습니다.
사용
git reflog
는 X가 1 git reset [email protected]{X}
또는 reflog의 위치에 reflog에서 직접 git reset ORIGINAL_MERGE_COMMIT_SHA
또는 확약에
리셋을 커밋 원래 병합의 SHA를 찾을 수 병합 커밋을 나타냅니다.
이제 원래 변경 내용 git commit
을 준비해야하며 여기에 --amend를 입력하지 않으면 새 커밋을 만듭니다.
2
I 작동 하나의 방법을 발견했습니다 :
git diff HEAD~1 > p.patch
git checkout master
git checkout -b branch-name
수동으로 편집 p.patch 병합에서 관련이없는 변경 사항을 제거 할 수 있습니다.
git apply p.patch
하지만 훨씬 쉽고/좋은 방법이 있다고 생각됩니다.
당신이'git reset HEAD @ {1}'을했는지에 따라 달라질 수 있습니다. 먼저 'git reflog'로 확인하십시오. –
나를 위해 작동하지 않았다 : ( – Artem
reflog 출력은 무엇입니까? 원래 병합 커밋에 대한 SHA를 얻을 수 있어야합니다. 다른 위치에있을 수도있는 작업에 따라 다릅니다. –