Was git checkout master + git reset --hard zu tun?
Ich 'm relativ neu zu git, und nachdem anfangs ein paar Probleme. Ich habe mehrere begeht, aber wenn ich versuche, um Sie zu schieben, bekomme ich eine Antwort, die alles sagt, was ist up-to-date. Ich fühle mich wie mein problem ist das gleiche auf aufgelistet in diese Frage, aber es empfiehlt die folgenden:
$ git log -1
# note the SHA-1 of latest commit
$ git checkout master
# reset your branch head to your previously detached commit
$ git reset --hard <commit-id>
Was genau wird "checking out the master" zu tun? Ich will nur nicht zu verlieren, die änderungen, die ich gemacht habe...
screenshot von gitk:
- Welche Frage ist "diese" Frage? Sie hat nicht einen link.
- sorry, siehe edit 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Check-out ein Zweig bewegt sich die lokalen
HEAD
Zeiger so, dass es zeigen auf den gleichen commit, der den Zweig Verweise. Zum Beispiel:Wenn auf einem ast
mybranch
(dieC
s sind verpflichtet):Nach dem ausführen
git checkout master
:Dieser bewegt sich auch Dateien in Ihrem Arbeitsverzeichnis als erforderlich, so dass es eine perfekte Momentaufnahme von dem, was das Projekt sah aus wie damals zu Begehen. Es nicht löschen oder ändern, verpflichtet, so dass Sie nicht verlieren Ihre Arbeit in einem Zweig, indem Sie ein anderes.
Was passiert im Falle einer "detached head", wie beschrieben, die andere Frage ist, dass
C3
ist nicht verbunden mit einem Zweig. Um dieses Problem zu beheben, aktualisieren Sie den commit, dermaster
Zweig Punkte zu, so dass es umfasst die neuen Sachen (C3
). Check-outmaster
sagt git, dass Sie arbeiten jetzt mit dem master-branch, dann tut eine hartereset
mit dem SHA1-Hash des Commits, die Sie wollen werden an der Spitze Ihrermaster
Zweig aktualisiert den Zweig Verweise auf das, was Sie wollen.Edit:
In diesem Fall, ein freistehendes Kopf war nicht das Problem. Denken Sie nur daran, dass zu Begehen, und drücken sind zwei verschiedene Dinge in git. Begehen nicht die Kommunikation mit einem zentralen repository wie bei Subversion. Nachdem Sie die änderungen an Ihrem Arbeitsverzeichnis, die Sie ausführen
git add filename
einmal für jede Datei, die Sie geändert haben, wofilename
ist der name der Datei. Sobald alle Dateien Hinzugefügt wurden, um den index, den Sie Begehen Sie mitgit commit
.Kurzschrift für diese ist die Verwendung
git commit -a
die automatisch geänderte Dateien auf den index, bevor Sie zu Begehen. Dies ermöglicht es Ihnen, überspringen Sie diegit add
Schritte. Beachten Sie, dassgit commit -a
nur hinzufügen geändert - Dateien. Wenn Sie die Einführung einer neuen Datei, die noch nie begangen wurden, müssen Sie manuell hinzufügen mitgit add
.Einmal Ihren commit vorgenommen wurde, können Sie
git push
schicken, die sich verpflichten, Ihre remote-repository und aktualisieren Sie die remote-Niederlassungen. Dies nur macht die remote-Kommunikation Zeug. Im Gegensatz zu Subversion, die sich verpflichten, ist vor Ort behandelt, ohne dass eine Interaktion mit dem server.origin/master
auf den gleichen commit wie auf Ihrem lokalenmaster
.gitk
damit wir sehen können, was Los ist. Vielleicht ist Ihr Szenario ist nicht das gleiche wie in der anderen Frage.git push
ohne Argumente wird nur push-to-remote-Zweige, die es weiß wie Sie verfolgen.origin/master
up to date ist, wenn Sie versuchen, zu schieben. Wie Sie sehen können von gitk,master
undorigin/master
zeigen auf den gleichen commit. Der rote Punkt oben, die Geschichte zeigt, dass Sie änderungen vorgenommen haben, aber nicht Sie begangen wurden. Um, um diese änderungen zu einem entfernten, Sie müssen verpflichtet werden, das lokal zuerst.git ci -a -m "made some changes"
zu Begehen. Das wird sich ändern mit dem red dot in der gitk auf eine grüne und diemaster
Zweig verschieben bis zum Punkt an Ihrem neuen commit. Danngit push
wird die Kommunikation mit dem remote-repository, das senden über die neuen commit und Update der remote-Zweigstelleorigin/master
auf es zu deuten. Zu Begehen, und drücken sind zwei völlig unterschiedliche Vorgänge im git - PUSH ist nicht Analog zu Begehen, in anderen VCS, wie Subversion.git commit
standardmäßig. Eine Menge Leuteci
als aliascommit
so kann man manchmal sehen, wie Sie Synonym verwendet.-a
modifier war die Sache, die fehlte mir... Danke nochmalgit checkout master
schalten Sie Ihren Arbeitsbereich, um die master Zweig, auch bekannt als Stamm in anderen versions-Kontroll-system.reset
tut, um zu beantworten die Frage.