2014-10-14 1 views
1

짧은 이야기를하기 위해 다음 상황에 처해 있습니다.병합 된 및 되 돌린 PR의 커밋을 새로운 PR로 가져 오는 방법은 무엇입니까?

기능 분기가 만들어져 잠시 동안 30 개의 커밋을 수집하고 master으로 병합했습니다. 병합은 GitHub의 웹 인터페이스를 통해 되돌려졌습니다 (예전의 효과를 되 돌리는 새로운 PR을 만들어 냄).

이제는 병합을 되돌리려는 문제를 해결했으며 원본 PR의 30 가지 정도의 커밋과 수정 사항을 포함한 새로운 커밋을 모두 만들고 싶습니다. .

지형지 물의 (병합되지 않은) 머리 부분에 내 지형 수정 점을 기반으로하고 몇 번 더 커밋 한 다음 PR을 만들기 위해 푸시했지만 어떤 이유로 PR은 새로운 지형지 물을 선택합니다 커밋, 오래된 것들은 아닙니다.

새 PR에 이전 커밋을 포함하려면 어떻게해야합니까?

repo (우리는 shared repo model을 사용하고 있습니다)에 밀어 넣기 권한이 있으므로, 강제 누름이 필요없는 거의 모든 작업이 master입니다.

간체 자식의 역사 :

* [feature-fix] <-- This is the branch I want to pull from now 
| * [master] 
| * [merge revert PR] 
* |\ 
| | * [revert PR] 
* |/    <-- This is the first commit included in the new PR by github 
| * [merge PR] 
|/| 
* | [feature] <-- This is where the original PR came from 
| | 
* | <-- I want these commits, originally included in the old PR, to be included 
* |  in my new PR too. 
| | 
* | <-- Started work on feature here. This is the first commit I want to include. 
\| 
    * <-- Common ancestor between `feature-fix` and `master`, as far as I can see 

답변

1

내가 당신을 이해하고있는 경우가 올바르게 다음을 수행해야합니다.

git checkout master 
git revert SHA_OF_MERGE_REVERT_PR 
git merge feature-fix 

키 단계는 병합을 되돌 리는 커밋을 되돌리고 있습니다. SHA는 모든 변경 사항을 제거했지만 병합 기록을 모두 보존 했으므로 새 커밋 만 보게됩니다.

Linus에서 직접 알 수 있습니다. here

+0

합리적인 것처럼 보입니다. 내일 일하러 갈 때 다시 시도해야 할 것입니다. –

관련 문제