병합중인 변경 사항 위에 현재 브랜치의 변경 사항을 어떻게 리베이스합니까?


144

괜찮아. 내가 지점에 있고 (예 working:) 다른 지점의 변경 사항 (예 :)을 병합 하려면 지점 에있는 동안 master명령 git-merge master을 실행 working하면 기록이 전혀 변경되지 않고 변경 사항이 병합됩니다. 를 실행 git-rebase master하면 변경 사항 masterworking분기 의 맨 위에 배치되도록 변경됩니다 . 그러나 변경 사항을 병합하고 변경 사항 을 최상위로 master변경 working하려면 어떻게해야합니까? 어떻게합니까? 할 수 있습니까?

나는 실행할 수 git-rebase working내에서 master의 상단에 내 변화를 넣어 지점 master지점,하지만 난 내에서 그렇게 할 수 있도록하고 싶습니다 working지점, 나는 방법을 모른다. 내가 생각할 수있는 가장 가까운 것은 새 분기를 master만든 다음 그 working위에 변경 사항 을 리베이스 하는 것이지만 분기를 변경하는 대신 새 분기가 생깁니다 working.

답변:


255

당신은 rebase거꾸로 무엇을했습니다 . git rebase master현재 분기에서 변경 사항을 가져 와서 (마스터에서 분기 된 이후)를 위에서 재생 master한 다음 현재 분기의 헤드를 새 히스토리의 헤드로 설정합니다. 그것은 하지 않습니다 에서 변경 사항을 재생 master현재 지점의 상단에.


3
@Jonathan 멋지다. 이것은 약간 까다로운 주제입니다. 그런데, git rebase working이동 것 master의를 변경 (그 지점 이후 working의 상단에있을 꺼 분기) working지점 -하지만가 할 수있는 매우 현명한 일이 아니다 master:
홉스

66

그것을 보는 또 다른 방법은 다음 git rebase master과 같이 고려 하는 것입니다.

현재 브랜치 를 리 베이스 master

여기서, ' master'는 것입니다 상류 지점 및 REBASE 동안, 그 이유를 설명 ours하고 theirs반전된다 .


또한 LOCAL과 REMOTE가 반대 인 이유도 설명합니다. 감사.
AVIDeveloper

LOCAL 및 REMOTE의 @AVIDeveloper, stackoverflow.com/a/3052118/6309
VonC

5
@@ VonC : 감사합니다. 그렇습니다. 오후에 나 자신에게 "아무리가 내 지점입니다. LOCAL은 내 것이 아닙니다." 우리 / 그들의 / 광산. 내 생각은 git difftool끔찍한 왼쪽 / 오른쪽에 관한 것입니다. 주제를 무시하지만 difftoolgit-meld를 고수하고 'working-dir', 'stash @ {0}'과 같은 이름을 즐기십시오.
AVIDeveloper

1
@ VonC : 우리가 한 후에 어떻게 할 수 있는지 설명 할 수 있습니까? git checkout branch_to_update git rebase master나는 git log에서 로컬 커밋의 상단에 master의 커밋을 가져 오는 대신 그 반대입니다.
JavaSa

1
@JavaSa 리베이스가 제대로 완료되지 않은 이상 이상하다? 자세한 내용이 포함 된 별도의 질문을해야 할 수도 있습니다.
VonC
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.