İnsanların klonlayabileceği ve üzerinde çalışabileceği uzak bir SVN deposunu yansıtmak için bir ara Git deposu kullanıyorum. Ara depo, ana şubenin yukarı yönlü SVN'den her gece yeniden temel almasını sağlıyor ve özellik dalları üzerinde çalışıyoruz. Örneğin:
remote:
master
local:
master
feature
Özellik şubemi başarıyla uzaktan kumandaya itebilir ve beklediğim şeyle sonuçlanabilirim:
remote:
master
feature
local:
master
feature
Sonra uzaktan kumandayı izlemek için dalı yeniden kurmak:
remote:
master
feature
local:
master
feature -> origin/feature
Ve her şey yolunda. Buradan yapmak istediğim, özellik dalını uzaktan kumandadaki ana dala yeniden oluşturmaktır, ancak bunu yerel makinemden yapmak istiyorum. Yapabilmek istiyorum:
git checkout master
git pull
git checkout feature
git rebase master
git push origin feature
Uzak özellik dalını uzak ana bilgisayarla güncel tutmak için. Ancak bu yöntem Git'in şikayet etmesine neden olur:
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
hile yapar ama kaçınmak istediğim birleştirme taahhüdüne neden olur. İletinin bunun feature -> feature
yerine belirtmesinden endişe ediyorum, feature -> origin/feature
ancak bu sadece bir sunum olabilir.
Bir şey mi kaçırıyorum, yoksa tamamen yanlış bir şekilde mi yapıyorum? Uzak sunucuda rebase yapmaktan kaçınmak kritik değildir, ancak rebase'deki herhangi bir birleştirme çakışmasını düzeltmeyi çok daha zorlaştırır.