2011-08-28 3 views
1

상황을 마스터하기 위해이 지점을 리베이스 분기 원인 문제에서 체리 따기 : 나는 전용 하위 디렉토리 madness/{src,docs}에 일부 야생 일을했던 실험 지점 crazy-idea 있습니다. 메모, 사진, 플롯을 만드는 해킹 스크립트가있는 커밋 톤. 이제 내가하는 일을 완전히 이해 했으므로 새로운 기능을 추가하고 기존 기능을 변경하여 실제 소스 파일을 src/에서 편집 할 차례입니다.

crazy-idea의 엉망으로 인해 master의 기록이 복잡해 졌기 때문에 src/의 변경 사항을 마스터에 병합하기 위해 good-idea 브랜치가 새로 만들어졌습니다. Convince는 src/의 파일을 여전히 crazy-idea에 변경 한 다음 체리 - 선택하여 good-idea에서 커밋을 선택합니다.

내 질문이 :이 good-idea이 마스터에 병합되었고이 커밋 이후에 일부 커밋이 마스터에서 수행되었다고 가정합니다. 다시 crazy-idea으로 돌아 가면 내 아이디어의 다른 측면을 철저히 다룰 수 있습니다. src/에 마스터 링하는 동안 예상되는 문제가 있습니까?

대체 방법은 을 crazy-idea 개 안에두고 서브 디렉토리를 복사하고 good-idea에 직접 코딩하는 동안 내 노트를 확인하는 것입니다.

당신은 뭐 더 똑똑하다고 제안합니까?

편집 음, 예상대로 나는 crazy-idea에서

git rebase master 

동안 충돌을 얻었다. 앞으로는 정확히 하나의 지점에서만 변경 사항을 소개하고 버려진 것이라는 것을 알고있는 경우에만 체리 피킹을 사용합니다. 가 있었다 N은 src/의 변화에 ​​커밋 다음과 같이

편집 나는 나의 상황을 해결했다. 마지막이 아닌 src/ 커밋이 변경되면 'foobar'메시지가 표시됩니다. 리베이스가 실패한 후 :

$ git rebase --abort 
$ git reset --hard HEAD^ 
HEAD is now at ... 
# more hard resets, I think actually N 
HEAD is now at ... foobar 
$ git rebase master 
First, rewinding head to replay your work on top of it... 
Applying .. 
... 

완료. 이것은 분명히 내가 바라는만큼 솔직하지는 않지만 나쁘지도 않다. 나는 madness/을 복사하는 대신에이 길로 갈 것이라고 생각한다.

답변

2

체리 피크를 조정하는 데 큰 문제가 없어야합니다. 재배치 할 때, Git은 이미 타겟 브랜치 (branch)에 도입 된 변경을 소개하는 커밋 (및 커밋의 diff 내의 헌크)을 무시합니다.

+0

니스. 내 생각 엔/git은 커밋 할 곳을 무시하고 rebase 할 때 내용을 보았을뿐입니다. Btw, 내가 말한 방법으로 git를 실제로 사용했는지 또는 잘 처리 할 수 ​​있다고 확신하고 있는지 확인하십시오. –

+0

필자는 꽤 복잡한 리베이스 작업을 수행했으며 이미 통합 된 전체 커밋을 올바르게 삭제하는 것을 보았습니다. – cdhowie

+0

소리가 굉장합니다. 나는 그것이 성공한다면 1-2 일 안에 답을 표시 할 것입니다 : P 고마워요! –