2016-07-23 6 views
1

필자는 대화 형 리베이스를 할 수 있으며, 먼저 커밋하고 다른 모든 픽스 업을 할 수 있습니다. 그러나 지사가 수백 개의 커밋을 포함한다면 매우 지루합니다.하나의 커밋에서 다른 커밋으로 모든 커밋을 쉽게 이동할 수 있습니까?

더 간단한 방법이 있습니까?

+1

'git checkout -b && git reset --soft && git commit'? – raina77ow

+0

줄 번호가있는 텍스트 편집기를 사용하는 경우 변경해야하는 행을 식별하고 대량 대체를 수행하는 것이 어렵지 않습니다. –

답변

4

git merge --squash을 사용하면 분기에 병합하는 동안 커밋을 스쿼시하여 하나의 명령으로 스쿼시 할 수 있습니다. 목표 지점

$ git checkout target-branch 

스위치는 하나 하나에 병합하고, target-branch에 적용됩니다 original-branch

$ git merge --squash original-branch 

모든 커밋을 사용합니다.

4

git cherry-pick -n으로 할 수 있습니다.

git cherry-pick -n OTHER_BRANCH~100..OTHER_BRANCH 
git commit -m "Merged 100 commits from OTHER_BRANCH" 

git cherry-pick

-n|--no-commit

는 보통 git cherry-pick 명령이 자동을 생성 : 그것은 당신이 커밋의 임의의 범위를 지정할 수 있기 때문에 그 접근 방식은 git merge --squash에 비해 더 유연 시퀀스 커밋 중입니다. 이 플래그는 을 커밋하지 않고 cherry tree- 을 각각 작업 트리와 인덱스에 적용하기 위해 필요한 변경 사항을 적용합니다. 또한이 옵션을 사용하면 인덱스에 이 HEAD 커밋과 일치하지 않아야합니다. 체리 피크는 인덱스의 시작 상태 인 에 대해 수행됩니다.

이 옵션은 인덱스를 행에 여러 개 커밋하면 효과가 나타납니다.

+0

유용한 옵션을 제공해 주셔서 감사합니다! 정말 흥미 롭습니다. 그러나 마지막 문장의 마지막 부분 인 '연속적인 색인에 미치는 영향'을 이해할 수는 없습니다. 그게 무슨 뜻이야? –

+0

@VictorDombrovsky이 문장은 "여러 커밋의 변경 사항을 인덱스에 병합 할 때 유용합니다"라고 바꿔 쓸 수 있습니다. – Leon