2012-06-05 11 views
5

Zusammenfassung: Ich möchte Dateien lokal bearbeiten, dann Push zu Github und meinem Webserver.Push to Remote-Server und Github

Ich habe die zwei Fernbedienungen ohne Problem eingerichtet, also gerade jetzt bin ich in der Lage, dies zu tun; Ich muss jedoch Zweig A lokal ausgecheckt haben und Zweig B auf dem Server. Dann muss ich SSH in den Server und den Zweig A (den ich will) auschecken. Ich möchte wirklich nicht einmal einen zweiten Zweig haben oder brauchen, aber viele Beiträge deuten darauf hin, dass Sie nicht zu einem nicht-bloßen Repository schieben können oder sollten. Es muss einen besseren Weg geben. Auch nur mit rsync wäre einfacher als das (und ich habe es für eine Weile getan).

Seltsamerweise geschieht dies nie auf Github. Fast alle meine Repos haben nur einen Zweig und ich habe diese Warnung nie bekommen.

Die Warnmeldung besagt, dass Sie receive.denyCurrentBranch ignorieren können, aber ich weiß nicht, wie sicher/gesund es ist. Ich hoffe, dass jemand meine vage Beschreibung verstehen wird (was auf mein begrenztes Wissen über Git zurückzuführen ist) und kenne die optimale Lösung.

Antwort

4

Es wäre einfacher, einen Post-Receive-Hook auf einem leeren Repo auf Ihrem Webserver einzurichten.
Auf diese Weise diese Haken können:

  • Verzeichnisänderung und ziehen Sie die neuen Änderungen an der
  • Kasse der Filiale Sie wollen tatsächlich nicht-bare Repo

Git Post-Receive Hook for Website Staging“ und die Arbeit ansehen in "Using Git to manage a web site":

$ mkdir /var/www/www.example.org 
$ cat > hooks/post-receive 
#!/bin/sh 
GIT_WORK_TREE=/var/www/www.example.org git checkout -f 
$ chmod +x hooks/post-receive 

(Anmerkung: Spaß der Tat können Sie push to two different remote repos simultaneously)

+0

Es dauerte eine Minute zu verdauen: '/ var/www/www.example.org' ist das eigentliche Site-Verzeichnis auf dem Server, die' post-receive' Datei geht in das leere Repository auf dem Server (muss sein ein anderes Verzeichnis), und die URL, zu der man wechseln soll, ist das bloße Repo. Ich habe diesen Führer gelesen, bevor ich gefragt habe. Ich war verwirrt, als das site.git-Verzeichnis keine meiner Dateien enthielt, aber ich denke, ich verstehe, wie es jetzt funktioniert. Vielen Dank. – Daniel