Warum kann ich nicht mit git merge --squash mit --no-ff?
Ich versuche, die git merge --squash mit der --no-ff-parameter, aber git nicht zulassen.
Jemand irgendwelche sugestion, um mir zu helfen?
Ich kann nicht mit fast-forward-merge und muss ich die Verwendung der --squash-parameter Gruppe eine Menge von commits vorgenommen wurden, in einem anderen Zweig.
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es wohl nicht lassen, Sie, weil ein solcher Befehl würde keinen Sinn machen.
In der Dokumentation für
--squash
sagt (Hervorhebung von mir):Den
--no-ff
- flag wird:Sind Sie im wesentlichen wissen, git, um eine Begehung und machen einen commit in der gleichen Zeit.
Wenn Sie wollen, erhalten Sie alle von der Geschichte des Zweiges, sollten Sie die
--no-ff
Flagge. Commit-d ist ein merge-commit, der zwei Eltern a und c.Wenn Sie wollen, dass alle commits auf, die Filiale so behandelt werden, als eine einzige Einheit funktionieren, dann verwenden Sie
--squash
. Commit-d ist eine regelmäßige verpflichten, die enthält alle änderungen, die sich aus begeht, b und c, hat aber nur ein Elternteil, ein.Was bedeutet
--squash
tun? - es drückt alle die commits zusammen, erstellt die index-Zustand, so dass Sie verpflichten sich, alle änderungen, die von der Branche als einen einzigen commit. Die änderung im code so sein wird, wie Sie zusammengeführt werden, ist der Zweig, aber Ihre Geschichte wie Sie aus einem riesigen commit.Was bedeutet
--no-ff
tun? - es sagt, auch, wenn der Zweig kann vorgespult, tun, behandeln Sie es als eine Zusammenführung, und erstellen Sie ein merge-commit.Als solche
--squash
geht es darum, eine Geschichte ohne eine Spur Zusammenführen.--no-ff
ist zu zwingen, eine Geschichte mit Zusammenführen, auch wenn es weitergeleitet wird. Als solche schließen Sie sich gegenseitig aus und können nicht zusammen verwendet werden.Ich denke die Frage ergibt sich aus einem Missverständnis der
fast-forward
. Es ist nicht ein verschmelzen; es ist nur über Spedition eine Niederlassung direkt auf einen anderen commit des zusammengeführten Zweig, weil die commits vorgenommen wurden, direkt auf den commit in die ehemalige Filiale. Kein schneller Vorlauf Stoppt dieses Verhalten und erzwingt einen merge-commit an der Spitze. Wenn Sie quetschen, ist es egal, ob Sie Sie bitten, es nicht zu schnell vorwärts. Es wäre das gleiche, so oder so.fatal: Not possible to fast-forward, aborting.
durch Einstellungmerge.ff
zuonly
im .gitconfig, dann immerfatal: You cannot combine --squash with --no-ff.
wenn Sie versuchen, die--no-ff
Flagge.git -c merge.ff merge --squash <args>
Diese Antwort nicht auf Ihre eigentliche Frage:
als gut bereits beantwortet.
Sondern um deutlich zu machen, dass das, was Sie waren nach der Tat mit einem etwas anderen Ansatz: Sie würde interactive rebase dem Zweig zunächst (z.B. squash alle deine commits) und danach konnte man
git merge --no-ff
dem ast, auf master.