Ich habe angefangen, mit ein paar Freunden an einem Projekt zusammenzuarbeiten und sie verwenden das Heroku Git Repository.
Ich habe das Repository vor ein paar Tagen geklont und sie haben seitdem einige Änderungen vorgenommen, sodass ich versuche, die neuesten Updates zu erhalten
Ich habe den git pull --rebase
Befehl wie hier angegeben ausgeführt (Ist dies der richtige Weg?): Https://devcenter.heroku.com/articles/sharing#merging-code-changes
Ich erhalte folgende Fehlermeldung:
$ git pull --rebase
Cannot pull with rebase: You have unstaged changes.
Please commit or stash them.
Ich vermute, dass ich mit dem Code herumgespielt habe und jetzt möchte ich die Änderungen entweder festschreiben oder verwerfen (bedeutet das, was Stash bedeutet?). Passiert das? In diesem Fall möchte ich alle vorgenommenen Änderungen verwerfen und nur den aktualisierten Code aus dem Git-Repository abrufen.
Irgendeine Idee, was ich tun kann?
git push -f
Wenn Sie Ihre Arbeitsänderungen beibehalten möchten, während Sie eine Rebase durchführen, können Sie diese verwenden
--autostash
. Aus der Dokumentation :Beispielsweise:
quelle
git config --global rebase.autoStash true
Sie den Schalter nicht übergeben.rebase.autostash
jedoch ab 2.6 verfügbar ist.)git rebase --interactive
!Das Ziehen mit Rebase ist im Allgemeinen eine gute Praxis.
Sie können dies jedoch nicht tun, wenn Ihr Index nicht sauber ist, dh Sie haben Änderungen vorgenommen, die nicht festgeschrieben wurden.
Sie können dies tun, um das Problem zu umgehen, vorausgesetzt, Sie möchten Ihre Änderungen beibehalten:
git stash
git stash apply stash@{0}
oder den einfacherengit stash pop
quelle
git stash pop
die zuletzt verdeckten Änderungen anwenden und vermeiden, sich länger zu merkenapply stash@{0}
..bashrc
(oder was auch immer Sie verwenden)alias stashpull='git stash; git pull; git stash pop'
Beginnen Sie zuerst mit einem
git status
Überprüfen Sie, ob Änderungen anstehen. Um sie zu verwerfen, laufen Sie
quelle
Das funktioniert bei mir:
quelle
Das kannst du immer tun
und Sie erhalten entweder (a) keine Änderung, wenn Sie nicht festgeschriebene Änderungen vorgenommen haben, die im Widerspruch zu vorgelagerten Änderungen stehen, oder (b) den gleichen Effekt wie stash / pull / apply: eine Rebase, mit der Sie auf die neuesten Änderungen von HEAD und Ihre nicht festgeschriebenen Änderungen zurückgreifen können wie es ist.
quelle
Wenn die nicht bereitgestellte Änderung darauf zurückzuführen ist, dass git versucht, eol-Konventionen für eine Datei zu korrigieren (wie es immer mein Fall ist), wird sie durch kein Verstauen, Auschecken oder Zurücksetzen verschwinden.
Wenn die Absicht jedoch wirklich darin besteht, nicht bereitgestellte Änderungen neu zu starten und zu ignorieren, lösche ich den Zweig lokal und checke ihn dann erneut aus.
Voila! Es hat mich noch nicht enttäuscht.
quelle
Wenn Sie Ihre Änderungen automatisch speichern und für jede Rebase freigeben möchten, können Sie Folgendes tun:
quelle
--autostash
wenn es nur ... automatisch sein kann?