Git Stash und Git Pull

86

Ich bin neu bei Git und verwende das EGit Eclipse Plugin zum Festschreiben.

Ich habe einige Dateien geändert und die Änderungen gespeichert, dann git pullin der Befehlszeile, in der die neuesten Commits abgerufen wurden. Dann habe ich Apply stashed changesvon EGit gemacht. Jetzt wurden meine Änderungen übernommen und die Änderungen, die beim letzten Festschreiben von versteckten Dateien vorgenommen wurden, gingen aus. Ich bin nicht sicher, warum ich nicht nach Zusammenführungskonflikten gefragt und meine Änderungen überschrieben und frühere Commit-Änderungen verloren habe.

Wie bekomme ich diese Änderungen?

Lolly
quelle
Das klingt nicht plausibel. Das Stash Apply bringt entweder uneingeschränkte Änderungen mit sich oder führt zu Zusammenführungskonflikten. Ich denke, Sie haben vergessen, etwas zu erwähnen. Sie können auch Ihre Schritte wiederholen. Höchstwahrscheinlich befindet sich Ihr Vorrat noch in der Liste. Verwenden Sie diese Option, um git stash listes anzuzeigen.
Kan

Antworten:

205

Wenn Sie Änderungen an Ihrer Arbeitskopie vorgenommen haben, führen Sie über die Befehlszeile Folgendes aus:

git stash 

Dadurch werden Ihre Änderungen gespeichert und Ihr Statusbericht gelöscht

git pull

Dadurch werden Änderungen aus dem Upstream-Zweig gezogen. Stellen Sie sicher, dass im Bericht der Schnellvorlauf angegeben ist. Wenn dies nicht der Fall ist, führen Sie wahrscheinlich eine unbeabsichtigte Zusammenführung durch

git stash pop

Dadurch werden verstaute Änderungen wieder auf die Arbeitskopie angewendet und die Änderungen aus dem Stash entfernt, sofern keine Konflikte vorliegen. Im Konfliktfall bleiben sie im Vorrat, sodass Sie bei Bedarf von vorne beginnen können.

wenn Sie sehen müssen, was sich in Ihrem Vorrat befindet

git stash list
Yilmazhuseyin
quelle
@java_newbie, Wenn du dies mit Stash machen und nein ziehen willst, gibt es keinen Weg. Mit Rebase können Sie jedoch das gleiche Ergebnis erzielen. Der Befehl 'git rebase origin / <Name des Upstream-Zweigs>' sollte dasselbe tun.
Yilmazhuseyin
5
Ich denke, das wird es tun:git stash && git pull && git stash pop
Fabrice Kabongo
@yilmazhuseyin Was meinst du mit "gleiches Ergebnis"? Kannst du eine Anekdote geben, wenn du kannst? Meinten Sie, git rebase origin/masterwird das gleiche Ergebnis wie git stash; git pull; git stash pop?
Nehem
8
Wenn Sie Git v2.9.0 oder eine neuere Version verwenden, versuchen Sie es git pull --rebase --autostash. Zu
Ihrer Information
1
Funktioniert --autostashimmer? Zum Beispiel, wenn ich nicht verfolgte Dateien habe, die sich bereits teilweise in Git befinden?
Qräbnö