wake-up-neo.net

Git Push zum Live-Server

Wir haben eine Website, auf der alle PHP/HTML/JS/CSS/etc-Dateien in einem Git-Repository gespeichert sind.

Derzeit haben wir drei Arten von Computern (oder Anwendungsfällen) für das Repository.

  • Lokaler Entwickler: Letzte Änderungen abrufen, Änderungen vornehmen, Lokaler Repo festlegen, Push an Master-Server
  • Masterserver: zentrales Repository, alle Änderungen werden an den Masterserver weitergeleitet
  • Webserver: Änderungen werden beim Bereitstellen der Website vom Masterserver abgerufen

So sind wir momentan:

local: git Push Origin master
local: password: ********
local: ssh [email protected]
webserver: password: ********
webserver: cd ~/domain.com/
webserver: git pull Origin master

Meine Frage ist also: Gibt es eine Möglichkeit, dass ich von meinem lokalen Computer aus direkt auf den Webserver schieben kann?

dh.

local: git Push Origin master
local: password: ********
local: git Push webserver master
local: password: ********
44
Petah

Ja, Sie können direkt auf Ihren Webserver pushen, aber ich würde es nicht empfehlen, da Sie nur auf Repositorys pushen sollten, die mit dem Argument --bare geklont wurden. Ich würde das Git Hook System verwenden, um das Repository auf dem Webserver automatisch vom Haupt-Repository aktualisieren zu lassen. Schauen Sie sich den Haken für post-update an:

http://git-scm.com/docs/githooks

Dieses Skript könnte sich wiederum über ssh und do beim Webserver anmelden

cd ~/domain.com/
git checkout master
git pull Origin master

Auf diese Weise müssen Sie sich nur auf den zentralen Server konzentrieren und müssen sich nicht um den Webserver kümmern. Er wird immer aktualisiert, sobald ein Push durchgeführt wurde. Wenn Sie etwas automatisieren können, dann automatisieren Sie es :)

Ich habe sogar einen schönen Artikel über das Einloggen über ssh in einem Skript für Sie gefunden (wenn Sie ein Passwort verwenden müssen, ist dies trivial, wenn ein ssh-Schlüssel eingerichtet wurde):

http://bash.cyberciti.biz/security/expect-ssh-login-script/

Hoffe das hilft!

36
ralphtheninja

Ich hatte die gleiche Frage und war nicht zufrieden mit der aktuell am besten bewerteten Antwort hier, endete mit git-website-howto , was den Prozess ziemlich gut umreißt und IMO eine viel sauberere und schnellere Vorgehensweise darstellt.

TL; DR, git init --bare zum Erstellen eines neuen Repos auf Ihrem Webserver, auf dem Sie Ihre Änderungen von Ihrem Dev-Rechner aus übertragen können. Wenn das Web-Repo Ihre Änderungen empfängt, wird der Post-Receive-Hook ausgelöst, der die Dateien in Ihr Web-Stammverzeichnis kopiert.

Dieser Ansatz gefällt mir, weil der Post-Receive-Hook die Arbeit auf Ihrem Server erledigt, so dass Ihr lokaler Computer viel schneller pushen und sich frei machen kann. Dies macht es auch sehr einfach, die Fernverfolgung für einen bestimmten Zweig einzurichten. Sie könnten einen Zweig namens production haben, um Ihren Webserver zu aktualisieren, während Ihr Master weiterhin für die Entwicklung und die Verknüpfung mit Ihrem Git-Repo an anderer Stelle zuständig ist.

Hinweis: Sie müssen git config receive.denycurrentbranch ignore auf Ihrem Webserver-Repo ausführen, um beim Push eine Warnung in Ihrer lokalen DevBox zu unterdrücken.

29
aleemb

Schauen Sie sich die git-URLs von http://www.kernel.org/pub/software/scm/git/docs/v1.6.0.6/git-Push.html an.

also würdest du versuchen:

git Push ssh://[email protected]/~admin/domain.com/ master

ADDED: Ich denke, ein Teil Ihrer Frage ist, wie Sie mehrere Remote-Repositories haben.

git remote add webserver ssh://[email protected]/~admin/domain.com/

das erlaubt dir zu laufen:

   git Push Origin master
   git Push webserver master
10
Tim Hoolihan

Ich denke, das von Ihnen gesuchte Feature wird hier beschrieben: http://debuggable.com/posts/git-tip-auto-update-working-ree-via-post-receive-hook:49551efe-6414-4e86- aec6-544f4834cda3

Von local aus können Sie den Webserver wie einen anderen als Remote-Server hinzufügen:

git remote add webserver [email protected]:/path/to/repo.git/
# Push only master branch by default
git config remote.webserver.Push master  

Wenn Sie jetzt bereit sind zu schieben, können Sie einfach Folgendes tun:

git Push webserver
4
cmcginty
  1. Remote $ git remote add server ssh://server_hostname:/path/to/git/repo hinzufügen
  2. Checkout-Zweig auf Server $ git checkout -b temp
  3. Push-Änderungen $ git Push server
  4. Überprüfen Sie den vorherigen Zweig und löschen Sie den temporären Zweig $ git checkout - # shorthand for previous branch, git checkout @{-1} $ git branch -d temp

Ich habe hier weitere Hintergrundinformationen: https://medium.com/@2upmedia/git-Push-to-live-server-5100406a26

1
2upmedia

Überprüfen Sie vor der Bereitstellung der lokalen Änderungen, ob sich auf dem Zielserver etwas geändert hat.

Fügen Sie dem Bereitstellungsskript hinzu, um sicherzustellen, dass sich auf dem Server nichts geändert hat:

$ git ls-files -dmo --exclude-standard

Wird leer sein, wenn unveränderte Dateien vorhanden sind, einfacher als das Analysieren des Git-Status

0
Rohan Khude