난 그냥 내 develop
지점에자식 병합 스쿼시를 취소하는 방법은 무엇입니까?
git merge --squash feature-branch
을 수행했다.
위의 명령은 새 커밋을 만들지 않고 헤드를 업데이트하는 것이 문제입니다. 제 의도는 develop
의 머리에 적용 할 하나의 커밋을 만드는 것이 었습니다.
요약하면 병합 전후의 develop
분기에 대한 로그는 동일합니다.
develop
을 git merge
이전의 상태로 되 돌리는 방법이 있습니까?
감사합니다.
댄 D.에서 주석과 나는 아래의 허용 대답을 기반으로 솔루션
내 문제를 해결할 수 있었다. 동일한 보트에있는 경우에 대비하여 내가 한 일을 아래에서보십시오.
1 - git reflog
을 실행했으며 내 develop
지점으로 수행 한 모든 커미트 및 체크 아웃을 나열했습니다.
2 - 제안한대로 git reset [email protected]{1}
을 수행하는 대신 마지막으로 내가 저지른 개발을 위해 그 번호를 찾았습니다. 제 경우에는 [email protected]{188}
이었습니다. 그래서 git reset [email protected]{188}
을 입력했습니다.
3 - 나는 git log
을 돌 렸으며 잘못된 병합을 수행하기 전에 내가 가진 커밋만을 보여주는 깨끗한 로그를 가졌습니다.
4 - 기능 개발 중에 생성 된 모든 새 파일을 실행하기 위해 git add -A .
을 실행했습니다.
5
- 난6 git commit -m "install feature-x"
를 실행 - 결과 지금은 올바른 파일 분기 develop
을 가지고 로그가 깨끗한 - 하나의 내가 feature-x
의 개발 기간 동안했던 모든 변경 내용을 커밋 보여주는.
원래 git merge --squash feature-branch
이 의도 한대로 작동하지 않는 이유를 알아야합니다.
해결 방법 2
마크 Longair의 대답은 내 문제에 대한 확실한 해결책이다. 나는 단지 그것을 테스트하고 작동합니다. 나는 feature-branch
내의 모든 내부 커밋 스쿼시 지금 사용하고 그냥 하나가 develop
브랜치에 커밋을 포함하는 프로세스 아래 참조 :
git checkout develop
git merge --squash feature-branch
git commit -m "install of feature-branch"
위의 순서는 마치 마법처럼 작동합니다.
'git reflog'를 사용하십시오. –