Sie haben also Ihre lokalen Änderungen in Ihr lokales Repository übernommen. Um Remote-Änderungen an Ihrem lokalen Repository zu erhalten, ohne Änderungen an Ihren lokalen Dateien vorzunehmen, können Sie diese verwenden git fetch. Eigentlich git pullist eine zweistufige Operation: eine zerstörungsfreie, git fetchgefolgt von a git merge. Siehe Was ist der Unterschied zwischen "Git Pull" und "Git Fetch"? für mehr Diskussion.
Detailliertes Beispiel:
Angenommen, Ihr Repository sieht folgendermaßen aus (Sie haben Änderungen vorgenommen test2:
* ed0bcb2 - (HEAD, master) test2
* 4942854 - (origin/master, origin/HEAD) first
Und das originRepository ist wie folgt (jemand anderes hat sich verpflichtet test1):
* 5437ca5 - (HEAD, master) test1
* 4942854 - first
Zu diesem Zeitpunkt wird sich git beschweren und Sie bitten, zuerst zu ziehen, wenn Sie versuchen, Ihr test2zu Remote-Repository zu pushen . Wenn Sie sehen möchten, was test1 ist, ohne Ihr lokales Repository zu ändern, führen Sie Folgendes aus:
$ git fetch
Ihr lokales Ergebnis-Repository würde folgendermaßen aussehen:
* ed0bcb2 - (HEAD, master) test2
| * 5437ca5 - (origin/master, origin/HEAD) test1
|/
* 4942854 - first
Jetzt haben Sie die Remote-Änderungen in einem anderen Zweig und behalten Ihre lokalen Dateien bei.
Was kommt dann als nächstes? Sie können a ausführen git merge, was den gleichen Effekt wie git pull(in Kombination mit dem vorherigen git fetch) hat, oder, wie ich es vorziehen würde, a ausführen, git rebase origin/masterum Ihre Änderung zusätzlich anzuwenden origin/master, wodurch Sie eine sauberere Historie erhalten.
git commitlokale Änderungen vorgit pull?