2015-09-08 12 views
5

habe ich ein git commit -am sofort von git stash gefolgt und bekam die Nachricht
No local changes to savegit stash `Keine lokale changes` aber git status` vor origin/master von 3 commits`

Als ich git status betreibe ich
bekommen

Ist das richtig?

Ich arbeitete an einigen Sachen und machte einige Commits, aber habe die Änderungen nicht vorangetrieben. Jetzt möchte ich sie "verstauen" und gehe zurück zu einer sauberen Version (meine neuesten pushed Änderungen - weiß nicht, wie man sich darauf bezieht)

Wie verberge ich meine Arbeit, die ich noch nicht geschoben habe und wieder zurück zum neuesten gedrückten Meisterzweig?

+1

Es ist richtig, du bist Baum verpflichtet, nicht hinter. Was meinst du mit "Wie kann ich meine Arbeit unterbringen und zum Meister gehen?" Bist du nicht in der "Master" Branche? Zeige die Ausgabe 'git branch' – zaratustra

+3

Was fragst du? Was versuchst du genau zu tun? – Jubobs

+1

Ich denke, was du getan hast, sind verworrene Zweige und Verstecke. Sie möchten Ihre lokalen Änderungen im Stash speichern. Wenn Sie beim Speichern Ihrer Arbeit zurück zum Ursprung/Master gehen möchten, können Sie den Ausgang/Master checken. Sie können Ihre Commits auch mit 'git push origin master 'steuern oder Sie können Ihre Arbeit in einem neuen Zweig speichern und dann den Ursprung/Master überprüfen. – Andy

Antwort

3

Danke für die Hilfe alle. Was ich tat, war
git reset --soft origin/master git stash save 'stashing my unfinished changes'

Dies löste alle meine commits, aber alle meine geänderten Dateien. Ich war dann in der Lage, die Änderungen zu speichern, da sie noch nicht begangen wurden. Es stellt automatisch meine lokalen Dateien auf Ursprung/Meister zurück, nachdem ich vertäut habe.

7

Wenn ich, wenn es richtig zu verstehen, müssen Sie:

1) Ihre lokalen Änderungen speichern.

git add -A 
git stash 

2) Sichern Sie Ihre Commits

git branch my_master_backup 

3) zu origin/master Ihre HEAD zurücksetzen zurück

git reset --hard origin/master 

4) Haben einige Arbeit, die Sie mit dem „sauber zu wollen Version "

5) Wiederherstellen von Änderungen, die Sie mit Ihren Commits vorgenommen haben. Korrigiert eventuelle Konflikte.

git merge my_master_backup 

6) Löschen Sie den Backup-Zweig. Wenn Sie es nicht löschen können, bedeutet dies, dass Sie Ihren Sicherungszweig und den Master nicht vollständig zusammengeführt haben.

git branch -d my_master_backup 

6) Stellen Sie Ihre lokalen Änderungen von dem Schritt 1:

git stash pop 

PS: Sie vermeiden können, einen Backup-Zweig zu schaffen und reflog verwenden. Wenn Sie Ihre Commits wiederherstellen möchten, müssen Sie git merge [email protected]{X} ausführen, wobei X die Nummer des gewünschten Commits aus Reflog ist.

+0

Ich glaube nicht, dass das OP etwas zu verstauen hat. Und er möchte seine Arbeit behalten, also würde ein harter Reset ihm nicht geben, was er will. –

+0

Ich schlug der OP vor, ihre lokalen (nicht committed) Änderungen zu speichern und eine Backup-Verzweigung vor dem Hard-Reset zu machen. Diese Änderungen/Commits stehen ihnen also immer zur Verfügung. – zaratustra

1

Aus Ihrer Frage und den Kommentaren, es klingt wie das, was wollen Sie ist zurück auf das Remote-Repository Master-Zweig tun gehen begehen, aber behalten Sie die Änderungen vorgenommen haben, seit Sie diese getan haben.

Was Sie tun können, ist nur einen neuen lokalen Zweig, wo die Remote (vorausgesetzt, es heißt origin) Zweig ist (vorausgesetzt, Sie arbeiten mit master).

$ git checkout -b original-master origin/master 

Dies wird eine neue Niederlassung schaffen genannt original-master (und diesen Zweig auszuchecken, bringen in Ihr Arbeitsverzeichnis zurück, wo origin/master zeigt auf), die auf der gleichen begehen wie die entfernten origin ‚s master Zweig sein.

An diesem Punkt der 3 verpflichtet Sie von origin/master zu (lokale) haben master erhalten bleiben wird, aber man kann (genannt durch eine Niederlassung mit original-master) einen anderen Zweig der Entwicklung mit einem Elternteil von origin/master starten.

+0

Ich finde es ein wenig verwirrend, weil der Remote-Master nun zwei verschiedene lokale Zweige verfolgt ("Master" und "Original-Master") – zaratustra

+0

@zaratustra Der OP versucht, seine Änderungen auf seinem lokalen 'Master'-Zweig zu bewahren. Ohne diese Commits "verwaist" zu sehen, sehe ich keinen Weg. Was die Benennung betrifft, kann OP die Namen der Zweige ändern, wenn er dies wünscht. –

+0

Gute Idee, mal sehen, welche Lösung besser passt :) – zaratustra

Verwandte Themen