2017-12-27 28 views
0

개발 지 점에 내 지형 지사를 병합하고 싶습니다. 그러나 커밋 중 하나가 지금 내가 원하는 커밋을 되돌 렸습니다.되돌려 진 커밋을 포함한베이스

 
* develop - merge revert PR 
|\ 
| * Revert undesired merge 
|/ 
* Merge (undesired) 
|\ 
| * commit A 
|/ 
| 
... (lots of commits) 
| 
| * feature - commit B 
| * commit A' 
|/ 
* 

git rebase -i develop 커밋 A '가 표시되지 않습니다. 나는 성공하지 않고 다양한 옵션 (-p, --keep-empty, -f)을 시도했다.

어떻게 개별적으로 체리 따기없이

 
    * feature - commit B 
    * commit A' 
/
* develop - merge revert PR 

으로 끝낼 수 ? . (.이 두 커밋 이상하다 -이 예를 단순화)

(참고 : 또한 가장 최근의 커밋은 다이어그램의 상단에있는 A와 A는 같은 내용이 있습니다, 즉 그들이있다

+0

첫 번째 다이어그램이 명확하지 않습니다. '기능'은 '개발'과 어떤 관련이 있습니까? 당신이 그렸던 것처럼 나는 그것들이 단지 같은 데이터베이스에있는 독립적 인 나무라고 생각할 것입니다.하지만 당신이 말한 것은 의심 스럽습니다. 어쨌든 'A'는''개발 '의 역사에서 어디에도 없다. 왜''개발'의 rebase에 나타나게 할 수있는 옵션이 있을까? –

+0

@MarkAdelsberger 나는 관계를 보여주기 위해 다이어그램을 개정했다. – TrueWill

+0

결코 병합을 되 돌리지 않는 것이 좋습니다. 그냥 다시 설정하십시오. – evolutionxbox

답변

2

"커밋 A"가 아직 병합되지 않은 시점에서 rebase이 할 일 목록을 찾는 데 도움이 필요합니다.

대신 git rebase -i develop

는 시도 : undesired이 어디
git rebase -i undesired~ --onto develop 

... 하나의 지점 또는 복귀 병합의 SHA 커밋.

또 다른 옵션은 다음과 같습니다 "develop에 마지막 두 커밋을 리베이스"를 의미

git rebase -i HEAD~2 --onto develop 

....

+0

첫 번째 옵션은 완벽하게 작동했습니다. 고맙습니다!! – TrueWill