단일 - 부모 커밋의 브랜치가있는 경우; 이 브랜치에서 연속적인 커밋 영역을 선택하고 다른 브랜치에 스쿼시를 추가하려면 어떻게해야합니까? 나는 원래의 브랜치를 바꾸고 싶지 않다. (그리고 각각의 커밋은 하나의 부모만을 가졌다 고 가정한다.)JGit : 하나의 브랜치에서 다른 브랜치로 커밋 영역을 선택하고 스쿼시하는 방법
다음은 예입니다 : 내가 C
, D
및 E
를 선택 그들을 스쿼시, 그리고 Z
에 그들을 배치 할. 그런 다음 F
과 G
을 골라 스쿼시하고 Z
의 머리에 놓습니다. 우리는 아래의 나무로 시작 :
A-----B------C------D------E------F------G------H
\
\
Z
그리고이 결과를 얻을 :
Y
가 숙청이 C
, D
의 커밋이고, E
X
은 다음과 같습니다
A-----B------C------D------E------F------G------H
\
\
Z------Y------X
을 F
과의 압박받은 커밋 10.
A-----B------C------D------E------F------G------H
\
\
Z------C------D------E------F------G
JGit에서이 작업을 수행 할 수있는 직접적인 방법이 있나요 :
내가 원하는아래 중간 결과를 피하기? MergeCommand
, CherryPickCommand
및 RebaseCommand
을보고 있었지만 중간 결과를 피하면서이를 수행하는 방법을 잘 모르겠습니다. 나는 많은 JGit 예제를 찾을 수 없다. 어떤 제안이라도 도움이 될 것입니다.
*** 스쿼시 ***는 C, D 및 E를 커밋하고 "병합"하지 않으려는 것처럼 들립니다. "병합"은 git에서 두 가지 개발 영역을 병합하는 것과 매우 구체적인 의미가 있습니다. 하지만 두 개의 분기를 병합하지 않고 일련의 커밋을 결합하려고합니다. 자식 (git)에서 여러 가지 방법이 있습니다 : (1) rebase, (2) cherry-pick, 부드러운 재설정과 재시작. 이 작업을 수행하는 배관 공구가 더 많이 있습니다. 나는 JGit에 대해 어느 정도 익숙하지는 않지만 어떤 종류의 도구를 사용할 수 있는지에 관해 조언합니다. –