Angenommen, wir haben die folgende Situation in Git:
-
Ein erstelltes Repository:
mkdir GitTest2 cd GitTest2 git init
-
Einige Änderungen im master werden vorgenommen und committed:
echo "Im Master" > file git commit -a -m "Initieller Commit"
-
Feature1 wird vom master abgezweigt und es wird daran gearbeitet:
git branch feature1 git checkout feature1 echo "Feature1" > featureFile git commit -a -m "Commit für Feature1"
-
In der Zwischenzeit wird ein Bug im Master-Code entdeckt und ein hotfix-Zweig eingerichtet:
git checkout master git branch hotfix1 git checkout hotfix1
-
Der Bug wird im hotfix-Zweig behoben und wieder in den Master gemerged (eventuell nach einem Pull Request/Code-Review):
echo "Bugfix" > bugfixFile git commit -a -m "Bugfix-Commit" git checkout master git merge --no-ff hotfix1
-
Die Entwicklung an Feature1 wird fortgesetzt:
git checkout feature1
Angenommen, ich benötige den Hotfix in meinem Feature-Branch, vielleicht weil der Bug auch dort auftritt. Wie kann ich das erreichen, ohne die Commits in meinen Feature-Branch zu duplizieren?
Ich möchte verhindern, dass zwei neue Commits in meinem Feature-Branch landen, die keine Beziehung zur Feature-Implementierung haben. Dies scheint mir besonders wichtig zu sein, wenn ich Pull Requests verwende: Alle diese Commits werden auch im Pull Request enthalten sein und müssen erneut überprüft werden, obwohl dies bereits geschehen ist (da der Hotfix bereits im Master ist).
Ich kann kein git merge master --ff-only
durchführen: "fatal: Es ist nicht möglich, einen Fast-Forward durchzuführen, Abbruch.", aber ich bin mir nicht sicher, ob mir das geholfen hat.