Sie müssen verstehen, dass ein Git-Repository nicht nur ein Baum von Verzeichnissen und Dateien ist, sondern auch eine Historie dieser Bäume speichert, die Verzweigungen und Zusammenführungen enthalten kann.
Wenn Sie aus einem Repository holen, kopieren Sie alle oder einige der dortigen Zweige in Ihr Repository. Diese befinden sich dann in Ihrem Repository als "entfernte Verfolgungszweige", z.B. Zweige mit Namen wie remotes/origin/master
oder dergleichen.
Das Abrufen neuer Commits aus dem entfernten Repository wird nichts an Ihrer lokalen Arbeitskopie ändern.
Ihre Arbeitskopie hat normalerweise einen Commit ausgecheckt, genannt HEAD
. Dieses Commit ist in der Regel die Spitze einer Ihrer lokalen Niederlassungen.
Ich denke, Sie wollen Ihren lokalen Zweig (oder vielleicht alle lokalen Zweige?) auf den entsprechenden entfernten Zweig aktualisieren und dann den neuesten Zweig auschecken.
Um Konflikte mit Ihrer Arbeitskopie (die möglicherweise lokale Änderungen enthält) zu vermeiden, bereinigen Sie zunächst alles, was nicht versioniert ist (mit git clean
). Dann checken Sie den lokalen Zweig aus, der dem entfernten Zweig entspricht, auf den Sie aktualisieren wollen, und verwenden git reset
um es auf den abgerufenen entfernten Zweig umzustellen. ( git pull
übernimmt alle Aktualisierungen des entfernten Zweigs in Ihren lokalen Zweig, der dasselbe tun kann, oder erstellt einen Merge-Commit, wenn Sie lokale Commits haben).
(Aber dann gehen wirklich alle lokalen Änderungen verloren - sowohl in der Arbeitskopie als auch in den lokalen Commits. Vergewissern Sie sich, dass Sie das wirklich wollen - andernfalls verwenden Sie besser einen neuen Zweig, das spart Ihre lokalen Übertragungen. Und verwenden Sie git stash
um Änderungen zu speichern, die noch nicht festgeschrieben sind).
Edita: Wenn Sie nur eine lokale Zweigstelle haben und eine entfernte Zweigstelle verfolgen, müssen Sie nur Folgendes tun
git pull
innerhalb des Arbeitsverzeichnisses.
Dadurch wird die aktuelle Version aller verfolgten entfernten Zweige abgerufen und der aktuelle Zweig (und das Arbeitsverzeichnis) auf die aktuelle Version des verfolgten entfernten Zweigs aktualisiert.