Saya menggunakan repositori Git perantara untuk mencerminkan repositori SVN jarak jauh, dari mana orang dapat mengkloning dan mengerjakannya. Repositori perantara memiliki cabang masternya direproduksi malam dari SVN hulu, dan kami sedang mengerjakan cabang fitur. Sebagai contoh:
remote:
master
local:
master
feature
Saya berhasil mendorong cabang fitur saya kembali ke jarak jauh, dan berakhir dengan apa yang saya harapkan:
remote:
master
feature
local:
master
feature
Saya kemudian mengatur ulang cabang untuk melacak remote:
remote:
master
feature
local:
master
feature -> origin/feature
Dan semuanya baik-baik saja. Apa yang ingin saya lakukan dari sini adalah rebase cabang fitur ke cabang master pada remote, tetapi saya ingin melakukan ini dari mesin lokal saya. Saya ingin dapat melakukan:
git checkout master
git pull
git checkout feature
git rebase master
git push origin feature
Agar cabang fitur remote selalu terbarui dengan master jarak jauh. Namun, metode ini menyebabkan Git mengeluh:
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
melakukan trik tetapi menyebabkan gabungan komit yang ingin saya hindari. Saya khawatir bahwa pesan menyatakan feature -> feature
daripada feature -> origin/feature
tetapi ini mungkin hanya hal presentasi.
Apakah saya melewatkan sesuatu, atau melakukan hal ini dengan cara yang sepenuhnya salah? Itu tidak penting untuk menghindari melakukan rebase pada server jauh, tetapi itu membuat memperbaiki konflik penggabungan dari rebase jauh lebih sulit.