2010-05-26 4 views
4

죄송합니다!두 부모의 커밋을 자식 부모의 단일 부모 컨텍스트로 변환하십시오.

Original repository http://img532.imageshack.us/img532/9039/screenshotrm.png

이 지금까지 내가 기대 한 것과이었다 내가 뭔가 잘못 내 저장소에 두 가지를 병합 마지막으로했던 것 같다. 이 난장판을 정리하고 다음과 같은 것을 얻을 수있는 방법이 있습니까? 나는 무엇을 잘못 했는가?

What I am looking for http://img684.imageshack.us/img684/9977/screenshot2ah.png

+0

Imageshack이 더 이상 스크린 샷을 제공하지 않습니다. – janv8000

+1

@ janv8000 죄송합니다. 매우 유감입니다. 나는 더 이상 스크린 샷의 사본을 가지고 있지 않으며, 인터넷 백백 머신 (Internet Wayback Machine)은 여기에서별로 도움이되지 않습니다. 그럼에도 불구하고이 질문의 대답은 여전히 ​​흥미 롭습니다. 그러나 그것을 지적 해 주셔서 감사합니다. – Auron

답변

11

병합은 두 부모가 있어야 커밋합니다. 그것은 병합의 전체 지점입니다. 당신은 하나의 부모와 병합을 원하는에 대한 정말 좋은 이유가있는 경우

, 당신은 --squash 옵션을 사용할 수 있습니다

# starting with branch-full-reordering at "Corrected GPU float measures" 
git merge --squash branch-full-reordering-wo-auxarray-wo-diver 
# go on to make the "improve performance commit" 

을하지만, 이것은 매우, 매우 드물게 당신이 원하는 없습니다. 이 명령은 다른 브랜치에서 수행 된 모든 작업을 병합 커밋으로 덤프하여 히스토리를 파괴합니다.

당신이 묘사 한 역사는 스쿼시 또는 다른 것으로 병합되지 않습니다. 그것은 리베이스입니다.

# starting with branch-full-reordering at "Corrected GPU float measures" 
git rebase branch-full-reordering branch-full-reordering-wo-auxarray-wo-diver 
# go on to make the "improve performance commit" 

이 경우에는 병합 커밋이 발생하지 않습니다. 보조 분기를 주 파티션에 이식 (리베이스)했을 것입니다.

나는 다시 강조해야한다 : 당신이 끝낸 역사는 당신이 원하는 것 같다. 그것은 개발의 일부는 다음 곁가지에 일어났다가 다시 합병 사실을 기록

당신은 같은 것을 할 수있는, 당신이 그것을 원하는 방식을 찾도록 역사를 수정하려면.

# recreate your topic branch 
git branch topic <SHA1 of commit "Correct pesky bug"> 
# overkill: you could also specify that as branch-full-reordering^^2 
# which means the second parent of the [first] parent of the branch tip 

# rebase the topic branch like you meant to in the first place :) 
# ~2 means two commits before 
# you could also just use the SHA1 of commit "Corrected GPU float measures" 
git rebase branch-full-reordering~2 topic 

# rebase the main branch onto the topic 
# the merge will be ignored, so this will just move the "Improve performance" commit  
git rebase topic branch-full-reordering 

# delete the topic branch 
git branch -d topic 
+0

네, 아마도 내가 찾고 있던 것은 실제로 리베이스 였고 병합이 아니었을 것입니다. 죄송합니다. 저는 열심히 일하는 초심자입니다. 그러나 그것이 끝나면 끝났습니다. 현재 상태의 저장소를 두 번째 그림처럼 변경할 수 있습니까? – Auron

+0

@Auron : 맞습니다. 너는 무엇이든 할 수있어! 일부 지침에서 수정하겠습니다. – Cascabel

+0

리베이스를 시도했지만 원래 생각했던 것보다 더 복잡합니다. 당신이 말했듯이 내가 두 분과를 발전시키는 방식을 더 잘 반영하기 때문에 저는 두 분과를 떠날 것입니다. 고맙습니다! – Auron

관련 문제