Frage Kann ich git pull --rebase statt "git stash git ziehen git stash pop" benutzen?


Was ist der Unterschied zwischen

git pull --rebase

und

git stash
git pull
git stash pop

9
2018-01-03 08:11


Ursprung


Antworten:


Ich würde vorschlagen, dass Sie ein experimentelles Repo erstellen und die Befehle ausprobieren. Experimentieren alleine macht das Lernen leichter.

Sie werden feststellen, dass die Befehlsfolge git stash; git pull; git stash pop wird sich bewegen nicht festgeschrieben ändert sich in den aktualisierten Kopf der Master-Verzweigung. (Es wird auch eine normale Zusammenführung machen, so dass festgeschriebene Änderungen zusammengeführt werden, nicht rebased, angenommen standardmäßig gitconfig)

Jedoch, git pull -rebase wird Änderungen, die haben, verschieben bereits begangen worden zum aktualisierten Leiter der Master-Filiale. Wenn Sie versuchen, diesen Befehl mit einer Dried Work-Struktur auszuführen, wird folgende Fehlermeldung angezeigt:

Cannot pull with rebase: You have unstaged changes.
Please commit or stash them.

8
2018-01-03 08:31



Die einfache Antwort auf Ihre Frage im Betreff lautet "Nein".

Der Unterschied zwischen git pull --rebase und git pull ist, dass der erste a fetch + rebase, der zweite a fetch + merge, außer du hast eine nicht standardmäßige git config, die sagt git pull zu tun rebase anstelle einer Zusammenführung. In diesem Fall wären die beiden Befehle identisch.

Der Unterschied zwischen diesen beiden Befehlen beeinflusst in keiner Weise die Notwendigkeit, nicht festgeschriebene Änderungen zu speichern und zu entfernen. Beide benötigen dies, wenn Sie einen schmutzigen Arbeitsbaum haben oder sie werden einen Fehler melden und Ihnen sagen, dass Sie Ihre Änderungen begehen oder speichern sollen.


3
2018-01-03 09:43



Ich weiß, das ist ein Jahr alt, aber ...

git pull --rebase

~ vs ~

git stash /git pull /git stash pop

Git Pull - Rebase ist eine Art Hybrid - wenn Sie so wollen - zwischen den beiden. Es ermöglicht Ihnen, Ihre Commits zu behalten und die zuletzt übertragenen (gedrückten) Dateien aus Ihrem zentralen Repo zu ziehen. Es ist irgendwie wie Zeitreise, Alter .. Explosionsgeräusche

Aber um die Frage zu beantworten .... Git stash hält sich an nicht festgeschriebenen Änderungen fest und setzt sie zurück, nachdem der Pull beendet ist.

Also - wenn Sie mit etwas nicht fertig sind, aber die neuesten Dateien auf dem zentralen Repo benötigen, würden Sie:

git stash git pull git stash pop

Aber sagen Sie, Sie haben etwas fertig und haben es begangen - aber Ihr Kollege Timmy, der niemandem etwas erzählt, hat Dateien abgelegt und sie zum Haupt-Repo geschoben, Sie sollten seine Sachen zuerst holen, DANN fügen Sie Ihre Commits dem Stapel hinzu und push'em ..

Wenn Sie Commits durchgeführt haben und Ihre Änderungen nicht in den Haupt-Repo verschoben haben, müssen Sie die neuen Dateien im zentralen Repo abrufen, da ein anderer Entwickler die Dateien seither festgeschrieben und übertragen hat.

git pull --rebase

Es ist wie wenn du einen Hamburger machst, aber vergessen hast den selbstgemachten Käse zu probieren, den dein Kumpel möchte, dass du es probierst, also kommt er mit deiner Scheibe und du musst dein Top-Brötchen nehmen, um diesen Käse aufzutragen, und dann die Brötchen wieder aufsetzen - Boom Bang Bing. Cheeseburger.


0
2017-07-16 17:20



git pull: Sie geben tatsächlich git fetch + git merge-Befehle aus, was zu einem zusätzlichen Commit und hässlichen Merge-Bubbles in Ihrem Commit-Protokoll führt.

git pull --rebase: Um das Repository sauber zu halten, werden Sie immer oben auf dem Baum festgelegt, bis Sie sie an einen Remote-Server senden. Der Befehl wird alle Ihre noch zu schiebenden Commits auf die Remote-Baum-Commits anwenden, so dass Ihre Commits direkt hintereinander und ohne Zweige ausgeführt werden können


-2
2018-01-03 08:22