Nehmen wir an, wir haben die folgende Situation in Git:
Ein erstelltes Repository:
mkdir GitTest2 cd GitTest2 git init
Einige Änderungen im Master finden statt und werden festgeschrieben:
echo "On Master" > file git commit -a -m "Initial commit"
Feature1 hat vom Master abgezweigt und einige Arbeiten sind erledigt:
git branch feature1 git checkout feature1 echo "Feature1" > featureFile git commit -a -m "Commit for feature1"
Währenddessen wird ein Fehler im Master-Code entdeckt und ein Hotfix-Zweig eingerichtet:
git checkout master git branch hotfix1 git checkout hotfix1
Der Fehler wurde im Hotfix-Zweig behoben und wieder mit dem Master zusammengeführt (möglicherweise nach einer Pull-Anfrage / Code-Überprüfung):
echo "Bugfix" > bugfixFile git commit -a -m "Bugfix Commit" git checkout master git merge --no-ff hotfix1
Die Entwicklung von Feature1 wird fortgesetzt:
git checkout feature1
Angenommen, ich benötige den Hotfix in meinem Feature-Zweig, möglicherweise weil der Fehler auch dort auftritt. Wie kann ich dies erreichen, ohne die Commits in meinem Feature-Zweig zu duplizieren?
Ich möchte verhindern, dass zwei neue Commits in meinem Feature-Zweig angezeigt werden, die keinen Bezug zur Feature-Implementierung haben. Dies scheint mir besonders wichtig zu sein, wenn ich Pull-Anfragen verwende: Alle diese Commits werden auch in die Pull-Anfrage aufgenommen und müssen überprüft werden, obwohl dies bereits geschehen ist (da sich der Hotfix bereits im Master befindet).
Ich kann kein git merge master --ff-only
: "fatal: Nicht schnell vorspulen, abbrechen.", Aber ich bin mir nicht sicher, ob mir das geholfen hat.
git rebase
scheint mir schwarze Magie zu sein ...
git branch feature1
und git checkout feature1
kombiniert werden könnte git checkout -b feature1
und 4. vollständig aufgit checkout -b hotfix1 master
feature1
vollständig lokal ist, schauen Sie sich das angit rebase
.