Was ist der Unterschied zwischen git pull und git reset –hard origin/?

Lesezeit: 3 Minuten

Benutzer-Avatar
technophyl

Ich finde letzteres schneller als das erste, also mache ich das normalerweise danach git fetch wann immer ich meine lokale Filiale mit der Fernbedienung synchronisieren muss. Was ist der Unterschied, wenn überhaupt?

  • git pull Abrufen von entfernten Repositories, git reset befasst sich mit dem lokalen Baum. Wie sind sie überhaupt vergleichbar?

    – zerkms

    27. März 2017 um 3:05 Uhr


  • Wenn sich Ihre lokale Niederlassung von der entfernten unterscheidet, git pull macht die Zusammenführung. git fetch mit git reset --hard checkt es nur aus.

    – ymonad

    27. März 2017 um 3:05 Uhr


  • Als ein sehr lose Analogie, denken Sie an git pull (welches ist git fetch gefolgt von git merge) als: ziehe mich an eine neue Adresse und nehme all meine Besitztümer mit. Denk an git fetch gefolgt von git reset --hard als: Verbrenne all meine Besitztümer und richte mich dann unter der neuen Adresse ein. Da die Häuser möbliert geliefert werden, ist das Ergebnis dasselbe, wenn Sie keine eigenen Besitztümer haben. Aber wenn du tunGut…

    – Torek

    27. März 2017 um 3:40 Uhr

  • git stash – Ich habe keine Besitztümer.. 🙂

    – Hurtürk

    27. März 2017 um 3:47 Uhr


  • @hurturk oder verbrenne einfach all meine Besitztümer.

    – technophil

    26. Juni 2017 um 20:36 Uhr

Die folgenden Befehle:

git fetch
git reset --hard origin/<branch>

verwirft alle lokalen Änderungen.

Wohingegen:

git pull

Was genau dasselbe ist wie:

git fetch
git merge origin/<branch>

wird versuchen, lokale Änderungen beizubehalten.

Benutzer-Avatar
Sajib Khan

$ git pull                        
# takes the latest changes of origin/branch (exists both local & remote changes)

$ git reset --hard origin/branch  
# replace your local with origin's branch history (discard local changes)

Beispiel: Angenommen, wir haben zwei Commits in Local A, B und remote hat zwei Commits A, C. Wenn du jetzt ziehst dann enthält dein Local A, B, C anders als wenn zurücksetzen dann wird Ihr lokaler haben A, C nicht B.

Diese beiden Befehle werden meistens für verschiedene Situationen verwendet.

git pull Pull (Fetch & Merge)-Änderungen von remote nach lokal, insbesondere andere Push-Commits nach remote, und Sie möchten, dass diese Commits auf Ihren lokalen Zweig angewendet werden.

git reset --hard origin/branch ist gezwungen, Ihren lokalen Branch auf den Commit zeigen zu lassen, auf den origin/branch zeigt. Dies ist normalerweise der Fall, wenn Sie die von Ihnen vorgenommenen lokalen Änderungen verwerfen und den lokalen Zweig als Remote-Status beibehalten möchten.

Benutzer-Avatar
Hurtürk

Die Art und Weise, wie Sie eine Quellaktualisierung erhalten, ist wichtiger als Ihre Leistungsbedenken. Sie müssen sie für bestimmte Fälle verwenden. Ich kann Ihnen zwei Beispiele nennen:

  • git reset --hard ... kann zum Aktualisieren von Code in der Produktion verwendet werden, wenn Sie häufig Produktionscode zum Debuggen ändern. Das passiert normalerweise in der frühen Phase einer Projektbereitstellung mit faulen Gedanken.
  • git pull ist die am meisten akzeptierte Methode, um neue Commits zu erhalten, und es macht normalerweise Sinn, dass Sie keine großen lokalen Änderungen haben werden. Wenn Ihre Commit-Perioden länger sind und sich mehr Leute im selben Zweig befinden, haben Sie möglicherweise ein Bauchgefühl, das Sie tun müssen git pull --rebase oder erst holen dann vergleichen.

Git kann explizit für sehr spezifische Bedürfnisse Ihres Entwicklungsstils sein, Sie können sie unterwegs entdecken. Die Leistung sollte überhaupt kein Problem mehr sein, sobald Sie zufrieden sind, dass Ihre Arbeit sicher ist.

Benutzer-Avatar
VaTo

Sie sind völlig unterschiedlich in dem, was sie tun:

git pull: Integriert Änderungen aus einem Remote-Repository in den aktuellen Zweig. Im Standardmodus ist git pull eine Abkürzung für git fetch, gefolgt von git merge FETCH_HEAD.

Mit git reset --hard origin/branch Git wird:

  • Machen Sie Ihren aktuellen Zweig (normalerweise Master) wieder zum Punkt <SOME-COMMIT>.
  • Machen Sie dann die Dateien in Ihrem Arbeitsbaum und den Index (“Staging-Bereich”) mit den festgeschriebenen Versionen identisch <SOME-COMMIT>.

Notiz: Das ist immer erwähnenswert git reset --hard ist ein potenziell gefährlicher Befehl, da er alle Ihre nicht festgeschriebenen Änderungen verwirft. Aus Sicherheitsgründen sollten Sie immer überprüfen, ob die Ausgabe von git status sauber (d. h. leer) ist, bevor Sie sie verwenden.

1227400cookie-checkWas ist der Unterschied zwischen git pull und git reset –hard origin/?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy