2017-08-30 7 views
0

Unser zentraler Git-Server ist im Moment nicht erreichbar, und meine Arbeitskopie ist veraltet, ich arbeite heute von zu Hause aus, und ich ' Ich versuche zu sehen, ob es einen Weg gibt, wie ich einen Kollegen, der die neueste Geschichte hat, dazu bringen kann, mir gleichwertige Daten an eine git pull origin master zu schicken.Um einen nicht reagierenden Git-Server zu arbeiten (kann git pull origin nicht machen) mit Patches

Um das Argument zu nennen, nennen wir den letzten Commit, den ich in meiner Arbeitskopie des master Zweigs abcd1234 habe. Die Arbeitskopie meines Kollegen ist mit dem Server auf dem neuesten Stand, und das letzte Commit in seiner Arbeitskopie des Master-Zweigs lautet ef123456.

Wie kann er mir einen Datensatz mailen, der den Verlauf von abcd1234 bis ef123456 abbildet, und wie kann ich ihn auf meine Arbeitskopie anwenden? (Und ist dies gleichbedeutend mit einem Pull vom Server? Oder würde ich mich in heikeles Gebiet bekommen?)

Ich versuchte, bei git-format-patch suchen, aber es scheint keine Beispiele für diese Art zu haben, und ich bin paranoid, um die Syntax richtig zu machen - wenn ich nicht sehr zuversichtlich bin, dass ich weiß, was ich mache, dann warte ich darauf, dass der Server wieder hochfährt, was ein paar Tage dauern könnte.


Hmm. Another stackoverflow issue erwähnt, dass git-bundle geeigneter ist. Aber ich bin mir immer noch nicht sicher, wie ich die Geschichte eines Zweiges von einem Rev-Hash zum anderen erfassen kann.

+0

Der Nachteil von 'git format-patch' ist, dass Sie verschiedene SHAs bekommen. Keine große Sache, wenn Sie sowieso immer rebase. – o11c

+0

Wenn Sie ein echtes VLAN haben, ist es einfach, ein Git-Verzeichnis über ssh zu klonen. – o11c

Antwort

1

Wenn-das ist eine sehr große wenn -alles glatt linear ist, und Sie sind die richtige Committer und einige andere Dinge in einer Reihe aufstellen, ist es möglich, git format-patch und git am zu verwenden, um diese Festschreibungen zu übertragen und sogar ihre ursprünglichen Hash halten IDs. Aber Sie sind viel besser dran mit git bundle, die im Wesentlichen git fetch in seine Bestandteile bricht.

Die Git-Dokumentation ist ziemlich obskur. Siehe stattdessen How to use git-bundle for keeping development in sync? Verwenden Sie etwas, das die Paketdaten in eine Form codiert, die für den Transport von Computer A zu Computer B geeignet ist (scp, um in eine E-Mail-Binärdatei zu konvertieren oder was auch immer). Dann nur git fetch aus den gebündelten Daten, sobald es auf dem Zielcomputer ist.

Verwandte Themen