병합 충돌을 해결하고 커밋 한 후 수동 병합 충돌 해결이 잘못된 인 것으로 나타났습니다. 나는 이미 repo를 개최하고, 저지르고, 밀었습니다. 충돌하는 파일을 충돌 상태로 되돌려 놓으면 어떻게 다르게 해결할 수 있습니까?잘못된 수동 병합 충돌 해결 후 병합 재조합
git checkout -m
은 이미 잘못된 병합 해결을 저지른 것이므로 너무 늦었습니다.
병합 충돌을 해결하고 커밋 한 후 수동 병합 충돌 해결이 잘못된 인 것으로 나타났습니다. 나는 이미 repo를 개최하고, 저지르고, 밀었습니다. 충돌하는 파일을 충돌 상태로 되돌려 놓으면 어떻게 다르게 해결할 수 있습니까?잘못된 수동 병합 충돌 해결 후 병합 재조합
git checkout -m
은 이미 잘못된 병합 해결을 저지른 것이므로 너무 늦었습니다.
깨끗한 작업 디렉터리에서 시작하여 병합 전에 다시 설정하고 새 분기를 시작한 다음 병합을 다시 수행합니다. 그런 다음 원본 병합 결과 분기와 새 분기 간의 diff를 수행하여 원래 분기에 적용 할 패치 파일을 얻을 수 있습니다. 이미 결과를 푸시 했으므로 기록을 편집 한 후 강제 푸시를 수행하는 대신 병합 커밋을 수정하여 새로운 커밋을 작성해야합니다.
지나치게 자세한 버전 :
현재의 역사는이 같은 형태의 경우및 c
병합 변경하려는 커밋이다. 완전히 청소 작업 디렉토리에서 시작
a - c - d <-HEAD/master
/
b
.
git branch old_merge <sha1 of c> // create branch for original merge
git checkout -b new_merge <sha1 of a> // create and checkout branch before merge
// re-merge branch
이 이런 식으로 뭔가를 만드는 것입니다
... 아마 정말 혼란 만 잘하면 당신은 아이디어를 얻을old_merge
∨
a - c - d <-master
X
b - c' <-HEAD
∧
new_merge
. 이제 old_merge
분기와 new_merge
분기 사이의 차이점을 수행하여 마스터에 대해 변경해야하는 변경 사항을 얻을 수 있습니다.
git diff old_merge..new_merge
당신은 다시 주인을 체크 아웃 한 후 두 가지의 차이를 적용 할 patch
UNIX 유틸리티를 사용할 수 있습니다.
git checkout master
git diff old_merge..new_merge | patch -p1
잘하면이 도움이됩니다. 당신이 혼란 스러울 때 알려주십시오.
어떻게 병합하기 전에 하나의 하드 재설정을 다시하겠습니까? 두 가지 지점의 커밋은 모두 얽혀 있습니다. – dotancohen
병합 커밋을위한 SHA1 코드를 알고 있습니까? 그게 당신이 쉽게 찾을 수 있을까요? 그렇다면 병합 커밋으로 리셋 한 후'git reset -hard HEAD^'를 수행하면 머지 전에 리셋됩니다. 또는 병합 전에 바로 도착할 때까지 계속 명령을 반복 할 수 있습니다. – bnorm
'git log --graph --decorate --oneline'은 저장소의 그래픽 표현을보기 위해 여기에 도움이 될 것입니다. – bnorm
은 다양한 픽스 업에 대한 단계별 가이드를위한 http://sethrobertson.github.io/GitFixUm/fixup.html을 살펴보십시오. 가장 큰 문제는 불량 병합을 강제로 푸시 (덮어 쓸 수 있는지) 아니면 지금 너무 늦었습니까? –