Nehmen wir an, wir haben die folgende Situation in Git:
Ein erstelltes Repository:
mkdir GitTest2 cd GitTest2 git initEinige Ä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 hotfix1Der 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 hotfix1Die 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 rebasescheint mir schwarze Magie zu sein ...
git branch feature1und git checkout feature1kombiniert werden könnte git checkout -b feature1und 4. vollständig aufgit checkout -b hotfix1 master
feature1vollständig lokal ist, schauen Sie sich das angit rebase.