차이가 없다면 변경 사항을 잃어버린 것 같습니다. 를 사용 git reflog
하여 리베이스 이전에 존재했던 브랜치를 식별하고을 사용 git reset --hard <my-branch-tip-before-rebase>
하여 원래 브랜치를 되 찾을 수 있습니다. 그리고 예, 프로세스를 다시 실행해야합니다. :-(
나는 당신이 어떻게 그들을 똑같이 보이게했는지 잘 모르겠습니다. 나는 당신이 준 명령으로 다음을 볼 것으로 예상했을 것입니다.
1 = 2 = 3 = 4 (master)
\ \
\ 5' = 6' = 8' (my_branch)
\
5 = 6 = 7
이 경우 아마도 다음을 사용해야합니다 rebase --onto
.
git rebase --onto master <commit id for 6> my_branch
그러면 다음과 같은 그래프가 생겼을 것입니다.
1 = 2 = 3 = 4 (master)
\ \
\ 8' (my_branch)
\
5 = 6 = 7
변경 사항을 잃는 한, 특히 거의 동일 해 보이는 두 개의 큰 블록이있는 경우 병합 충돌을 처리하는 데 약간의 연습이 필요합니다. 나는 항상 커밋에 의해 도입 된 실제 차이를보고 그 변화를 알아 내고 적절한 방식으로 이미 브랜치에있는 것과 병합하려고 시도합니다. 나는 당신의 변화가 거기에서 어떻게 손실되었는지 쉽게 볼 수 있습니다.
기억해야 할 한 가지. 병합 충돌이 많이 발생할 것으로 예상하지 않는 경우-소스가 충분히 갈라 졌다고 느끼지 않기 때문에 소스를 보는 것은 잘못된 일을한다는 경고 플래그입니다. 을 수행 git rebase --abort
하고 분기를 조사하고 충돌이 예상되는지 다시 확인 하여 백업하는 것이 좋습니다 . 충돌이 발생한 위치를 기록해 두십시오 (일반적으로 rebase가 명령 줄로 이동하기 직전에 "Applying ..."이 있습니다). 일반적으로 시작하기에 좋은 곳입니다.
때때로 갈등은 피할 수없고 해결하기가 지루합니다. 그러나 나는 연습을 통해이 문제에 덜 부딪 힐 것이라고 생각합니다.
브랜치 간 변경 사항 이식에 대한 자세한 내용은 git rebase man 페이지를 참조하십시오. "rebase --onto"를 검색합니다. 첫 번째 히트는 변경 사항을 다른 브랜치로 이식하는 것에 대해 이야기하는 섹션에 도착합니다.
git rebase --skip
(대신--continue
) 그것은 당신이 실제로 여전히 REBASE 동안 의미있는 변화가 있었다 변경을 "생략"수 있습니까?