2016-07-17 3 views
1

포크를 업스트림과 동기화하려고합니다.커밋 수를 rebase하는 방법

git rebase upstream/master 

는 그러나 슬프게도, 나는 내 로컬 커밋 100 +를이 있다는 것을 발견하고, 그들 모두는 갈등 해결 수동 필요는 없다.

내가 생각하고있는 생각 중 하나는 모든 로컬 커밋을 하나로 스쿼시 할 수 있다는 것입니다. 그런 다음 커밋을 리베이스하면 더 쉽게 커밋됩니다. 그러나 이것은 내가 커밋의 모든 기록을 유지하기를 원하기 때문에 내가 원하는 마지막 것입니다.

적은 노력으로 거대한 커밋을 리베이스하는 방법이 있습니까?

+0

어떻게 관리하셨습니까? 로컬 및 원격에서 동기화되지 않은 위치는 어디입니까? 풀 rebase 시도 했습니까? – jonrsharpe

+3

'git pull'과 반대로'git rebase'를 사용하는 특별한 이유가 있습니까? (즉,'git pull upstream/master')? 후자는 두 개의 브랜치가있는 히스토리를 생성하지만 업스트림과 로컬 작업 공간의 마지막 커밋 만 병합하려고 시도합니다. 즉 커밋을 한 번만 해결하면됩니다. – Kevin

답변

1

저는 병합이 실제로 당신이 원하는 것이지 rebase가 아니라고 생각합니다. 병합 충돌을 해결하는 것은 100 개 이상의 커밋을 모두 단일 커밋으로 압축 한 다음 해당 커밋을 리베이스 한 경우와 동일합니다. 그러나 병합을 통해 원하는대로 진행중인 작업 기록을 보존 할 수 있습니다.

Rebase는 친구들과의 최신 작업을 동기화하거나 특정 기록을 다시 작성할 필요가있을 때 유용하지만, 100 개 이상의 커밋으로 갈라지면 가지로 더 일반적으로 처리되는 유스 케이스. 병합 커밋을 통한 동기화는이 경우에 완벽하다고 생각합니다.

당신이 정말이 당신의 작업 진행 역사를 볼 수 있습니다 누구에게 유일하게 할 필요가있는 경우, 로컬 지점 (git branch <my-true-local-history>를) 만들 수는 유지하기 위해 해당 지역의 업무 진행의 머리에서 지적 커밋에 대한 명명 된 참조를 작성한 다음 병합 커밋을 생성하는 스쿼시 병합 (git merge --squash)을 수행하지만 작업 진행 중 커밋을 단일 커밋으로 축소합니다 (이전에 생성 한 로컬 분기는 여전히 진실한 상세한 역사, 그러나).

+0

감사합니다. 'git merge '가 작동합니다. – harryz

관련 문제