사람들이 복제하고 작업 할 수있는 원격 SVN 저장소를 미러링하기 위해 중간 Git 저장소를 사용하고 있습니다. 중간 리포지토리에는 업스트림 SVN에서 야간에 리베이스되는 마스터 브랜치가 있으며 기능 브랜치에서 작업하고 있습니다. 예를 들면 다음과 같습니다.
remote:
master
local:
master
feature
기능 분기를 다시 원격으로 푸시하고 예상 한 결과를 얻을 수 있습니다.
remote:
master
feature
local:
master
feature
그런 다음 지점을 다시 설정하여 리모컨을 추적합니다.
remote:
master
feature
local:
master
feature -> origin/feature
그리고 모든 것이 잘됩니다. 여기에서 수행하려는 작업은 기능 분기를 원격의 마스터 분기로 리베이스하는 것이지만 로컬 컴퓨터에서 수행하고 싶습니다. 나는 할 수 있기를 원합니다 :
git checkout master
git pull
git checkout feature
git rebase master
git push origin feature
원격 기능 분기를 원격 마스터와 함께 최신 상태로 유지합니다. 그러나이 방법으로 Git은 다음과 같이 불평합니다.
To <remote>
! [rejected] feature -> feature (non-fast-forward)
error: failed to push some refs to '<remote>'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
git pull
트릭을 수행하지만 피하고 싶은 병합 커밋을 유발합니다. 메시지가 feature -> feature
아니라 오히려 메시지가 표시 될까 걱정 feature -> origin/feature
하지만 이것은 단지 프레젠테이션 일 수 있습니다.
내가 뭔가를 놓치고 있거나 완전히 잘못된 방식으로 진행하고 있습니까? 원격 서버에서 리베이스를 수행하지 않는 것이 중요하지 않지만, 리베이스에서 병합 충돌을 수정하는 것이 훨씬 어렵습니다.