2017-02-23 10 views
1

정말 이상한 일을했습니다. 그리고 무엇을해야할지 모릅니다.git, merge, Gerrit를 rebase 할 수 없습니다.

나는 리트 함께 일하고, 그리고 그냥 때문에 충돌 병합 할 수 없습니다 것을 나에게 보여 주었지만 충돌이 있었다, 대신 나는 때문에

HEAD을 분리이었다 추측 그리고 난 정말 무작위을 시작 것은, 첫째로 나는 cherry-picked 하나에 3 커밋, 나는 다시 내가 리베이스하려고했으나 병합 충돌을 가지고, 그래서 결국 내가

http://imgur.com/a/FnJqI

이가 다음 로그를 가지고 있음을, 분리 된 마스터 지점을 가지고보다 나는 그 차이점을 이해하지 못하기 때문에 N mergerebase

것은 당신이 날 (하나 개의 직선으로) 역사를 수정하고 질문에 대답하는 데 도움이 시겠어요 : 기본 자식으로 mergerebase 경우의 차이점은 무엇입니까

것은 fast-forward 때문에 결과의 모양을 사용하여 리베이스가하는 것과 정확히 똑같습니다. 그리고 제 경우에는 병합 충돌 때문에 rebase를 만들 수 없었습니다. 그렇다면 rebase의 목적은 무엇입니까?

답변

0

Rebase은 가능한 경우에만 fast-forward을 사용하기 때문에 merge과 다릅니다. 예 : master에서 새 분기를 만들고, 새 분기를 커밋하고 master에 커밋하지 않고 merge 변경 사항을 마스터로 되돌리려면 git은이 명령을 사용했을 때와 동일한 것으로 생각합니다. 어쨌든 master에 최선을 다하고 있습니다. 이 상황에서 rebase을 사용하면 동일하게 생각할 것입니다.

브랜치를 변경하고 자식이 빨리 감기를 사용할 수없는 경우 진짜 재미가 시작됩니다. merge은 부모가 둘 다 마지막 커밋이 될 새 커밋을 만들고 rebase은 rebase하려는 브랜치의베이스를 다른 브랜치의 헤드로 옮기십시오.

그래서, 당신은 (머리로 표시) 병합을 취소해야합니다 (하나 개의 직선에) 당신의 역사를 "수정"하고 당신은 당신의 master 지점에 Rebasing 지점을 리베이스 할 필요가

git checkout Rebasing 
git rebase master 

당신 여전히 분쟁이 발생하여 해결하고 계속해야합니다.

git rebase --continue 

번 수만큼 필요합니다.