Ich verwende ein Git-Zwischenrepository, um ein entferntes SVN-Repository zu spiegeln, von dem aus Leute klonen und daran arbeiten können. Im Zwischen-Repository wird der Hauptzweig jede Nacht vom Upstream-SVN neu basiert, und wir arbeiten an Feature-Zweigen. Beispielsweise:
remote:
master
local:
master
feature
Ich kann meinen Feature-Zweig erfolgreich auf die Fernbedienung zurückschieben und am Ende das erreichen, was ich erwarte:
remote:
master
feature
local:
master
feature
Ich richte dann den Zweig neu ein, um die Fernbedienung zu verfolgen:
remote:
master
feature
local:
master
feature -> origin/feature
Und alles ist gut. Was ich von hier aus tun möchte, ist, den Feature-Zweig auf den Master-Zweig auf der Fernbedienung umzustellen, aber ich möchte dies von meinem lokalen Computer aus tun. Ich möchte in der Lage sein:
git checkout master
git pull
git checkout feature
git rebase master
git push origin feature
Um den Zweig der Remote-Funktion mit dem Remote-Master auf dem neuesten Stand zu halten. Diese Methode führt jedoch dazu, dass Git sich beschwert:
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
macht den Trick, verursacht aber ein Merge-Commit, das ich vermeiden möchte. Ich bin besorgt, dass die Nachricht feature -> feature
eher besagt als, feature -> origin/feature
aber dies kann nur eine Präsentationssache sein.
Vermisse ich etwas oder gehe ich völlig falsch vor? Es ist nicht wichtig, die Neuausrichtung auf dem Remote-Server zu vermeiden, aber es macht die Behebung von Zusammenführungskonflikten aus der Neueinrichtung viel schwieriger.