Manchmal habe ich das Problem, dass auf einer Arbeitsstation nicht festgeschriebener Code vorhanden ist, der nicht festgeschrieben werden kann, aber auf einer anderen Arbeitsstation oder einem anderen Laptop ausgeführt werden muss.
Hat jemand eine Lösung für dieses Problem, z. B. ein "Soft Commit" oder eine andere Möglichkeit, die Änderungen auf einen anderen Computer zu übertragen, um sie an einem anderen Ort zu bearbeiten?
Ich würde es vorziehen, nicht gezwungen zu sein, Änderungen vorzunehmen und voranzutreiben, die nicht ordnungsgemäß implementiert wurden.
git stash
...?Antworten:
Im Folgenden wird davon ausgegangen, dass Ihr lokales Repo ein Klon eines Repos auf einem anderen Server ist, z. B. Github. und dass Sie berechtigt sind, Änderungen am Upstream-Server vorzunehmen. In meinem Beispiel habe ich dieses Upstream-Repo "Ursprung" genannt. Führen Sie
git remote show
den Befehl aus, um andere Repos aufzulisten. Dies kann Ihnen einen Hinweis darauf geben, wie es heißt.Ich würde vorschlagen, einen Zweig zu machen, dann können Sie den Zweig auf einem anderen Rechner auschecken. Tatsächlich können Sie, wenn Sie eine Verzweigung erstellen, sobald Sie mit der Arbeit beginnen, sich auf Ihre Verzweigung "festlegen", eine Nachverfolgung und ein Backup Ihrer Arbeit erstellen, ohne über einen stabilen Codesatz verfügen zu müssen. Sobald Sie mit Ihrer Arbeit zufrieden sind, können Sie sie wieder in Ihrem "Master" -Zweig zusammenführen.
git checkout -b MyNewBranch
git push origin MyNewBranch
git checkout MyNewBranch
git checkout master
git merge MyNewBranch
git branch
quelle
git branch -d master
" bin ich verwirrt, fragt das git nicht den master zweig zu löschen ?? (das ist sowieso der Eindruck, den ich beim Lesen des Git-HandbuchsMit können Sie
git diff
einen Patch erstellen und dann auf einem anderen Computer anwenden. Sie können auch ein temporäres Commit erstellen und es dann von einem anderen Computer herunterladen. Sie können sogar einen temporären Zweig auf einem anderen Computer erstellen, Ihr temporäres Commit dorthin übertragen und dann den Zweig löschen.Meine Lieblingsmethode ist die zweite: ein temporäres Commit erstellen, dann zu einem anderen Computer gehen und so etwas tun:
quelle
git format-patch
?git diff
. Fehlt mir etwas?git format-patch deadbee..badcab1e
- Es werden.patch
Dateien für jedes Commit separat erstellt, wobei der Name und die Commit-Nachricht erhalten bleiben.Ich lege es fest. Das i schiebe zum persönlichen Zweig , checke auf der anderen Seite aus und ändere. Und löschen Sie den persönlichen Zweig, wenn Sie fertig sind.
Natürlich können Sie direkt zwischen den Repos pushen, Sie können Bundle oder
format-patch
/ und verwendenam
, aber eine persönliche Filiale ist bei weitem die einfachste Lösung. Und das Umschreiben von Historie ist keine große Sache, solange sie nicht an eine gemeinsame Zweigstelle weitergegeben wird. In vielen Projekten sollen die Benutzer die Feature-Zweige zurückspulen, damit sie für die Überprüfung leichter zu verstehen sind.quelle
Der einfache Ansatz ist der, den Sie beschreiben: Kopieren Sie die
.git
verborgene Verzeichnis und die Projektdateien auf einen anderen Computer, auf dem Sie entweder ein Commit ausführen und den Vorgang abschließen oder einfach weiterarbeiten können.Das
.git
Verzeichnis ist der Ort, an dem Ihr Git-Verlauf gespeichert wird. Wenn Sie dies zusammen mit den eigentlichen Dateien beibehalten, bleibt der gesamte Projektverlauf erhalten.Wenn Sie die ursprüngliche Maschine dauerhaft nicht mehr verwenden, würde ich diesen Ansatz wahrscheinlich empfehlen.
quelle
Wie andere geantwortet haben, sollten Sie sich bei Git nicht um unvollständigen Code in Ihren persönlichen Zweigen kümmern. Wenn Sie jedoch aus irgendeinem Grund wirklich wirklich wirklich nicht möchten, dass Ihre unvollendete Arbeit jemals das Hauptrepo berührt, können Sie die verteilte Natur von Git nutzen!
Es gibt ein einfaches Tool mit dem Namen
git bundle
, mit dem Sie Änderungen problemlos ohne ein zentrales Repository weitergeben können. Klonen Sie zuerst das Repo:Nehmen Sie einige Änderungen vor und weisen Sie sie einem temporären Zweig zu:
Nun bündeln Sie die Änderungen:
Jetzt haben Sie eine Bundle-Datei, die Sie an Ihren neuen Computer senden können. Wie benutzt du es dort? Erstellen wir eine neue Arbeitskopie:
Wir müssen unser Bundle wie eine andere Fernbedienung behandeln, damit wir die Änderungen daraus abrufen können
Da der springende Punkt darin bestand, die Änderungen spurlos zu übertragen, möchten wir sie in die Arbeitskopie quetschen, um das temporäre Commit zu verlieren:
und alles, was übrig bleibt, ist, die temporäre Fernbedienung zu entfernen:
VIOLA! Die Änderungen wurden in die neue Arbeitskopie übernommen, ohne eine Spur von Verzweigung oder Festschreibung zu hinterlassen!
Aber wirklich - dieser Prozess ist ziemlich langwierig und umständlich. Dies ist Git, nicht SVN - es sollte wirklich keinen Grund geben, Ihre persönliche Filiale nicht auf das zentrale Repo zu verlagern.
quelle