2012-05-02 2 views
15

원래 전체 요청이 풀 요청을 위해 마스터에서 생성 되었기 때문에 다시 작성하려는 토픽 브랜치가 있다고 가정 해 보겠습니다. 어떤 이유로, 쉽게 또는 내가 내가에서 자신의 조상을 추적 할 수있는 두 개의 참조를 저지 찾을 git merge-base <branch1> <branch2 || master>을 사용할 수 있으며 사용할 수 있습니다 알고마스터로부터 분기점을 가진 브랜치의 대화식 rebase

git rebase -i <commit> 

에 전달하려는 해시를 커밋 결정 git log를 사용하여 명확하지 않다 그 커밋을 결정합니다.

git rebase -i `git merge-base my_branch master` 

편집을 사용하는 것보다 (마스터가 진행했는지 여부) 대화 형이 전체 분기를 리베이스에 더 좋은 방법이 있다면 내가 알고 싶은 것은 : 내가 처음 커밋의 부모를 변경하지 않으 이 브랜치에서 만들어 지므로 git rebase -i master은 브랜치가 생성되고 브랜치가 현재 커밋 마스터에서 생성 된 이후에 마스터가 모두 진행되지 않은 경우에만 작동합니다.

+0

이것은 대답이 아니라 흥미로운 해킹입니다. 나는 .profile에 다음을 넣었다. 'function gri () git rebase -i \'git merge-base $ @ master \ ' }' – Aaron

답변

12

어쩌면 나는 당신의 질문을 오해하고있다. 그러나 나는 git rebase -i master이 당신이 원하는 것을해야한다고 생각한다. 병합베이스를 파악하고 그 지점에서 현재 HEAD로 전체 브랜치를 리베이스하여 마스터의 현재 팁에서 분기 된 것처럼 보입니다.

또한 마스터가 고급 상태가 아니면 리베이스 작업은 거의 아무 작업도 수행하지 않습니다.

+0

고마워요. 나는 나중에 git rebase -i master가 그렇게 할 것이라는 것을 깨달았지만, 만약 그들이 이미 같지 않았 으면 내 지사장을 현재 주인이되도록 변경하지 않고 대화식으로 rebase하고 싶다면 어떻게 될까? – Aaron

+0

'my-branch'를 실행 중이고'git rebase -i master'를 실행하면'my-branch' ref 만 갱신됩니다.'master'는 갱신되지 않습니다. 리베이스 (rebase)는 _current_ 브랜치를 브랜치 상위의 다른 포인트 (또는 --onto를 사용하는 경우 완전히 다른 브랜치 상위)로 옮긴다.하지만 다른 브랜치는 수정하지 않는다. – twalberg

+0

미안 내가 말한 것은 미안 내가 위에서 브랜치의 첫 번째 커밋의 부모를 변경하지 않고 원래의 커밋에 브랜치를 리베이스하기 위해 게시 한 것보다 간단한 방법이 있다는 것을 알았습니다. – Aaron