Git Push in Production (FTP)


130

Ich möchte wissen, ob es eine einfache Möglichkeit gibt, ein GIT-Repository in die Produktion zu bringen (auf einem FTP-Server). Vielen Dank

Antworten:


162

Einige Tools, die kürzlich zum Git-Wiki hinzugefügt wurden :

git-ftp von René Moser ist ein einfaches Shell-Skript, mit dem FTP auf Git-Weise ausgeführt werden kann. Verwenden Sie git-ftp.sh, um nur die von Git verfolgten Dateien auf einen FTP-Server hochzuladen, die sich seit dem letzten Upload geändert haben. Das spart Zeit und Bandbreite. Selbst wenn Sie mit verschiedenen Zweigen spielen, weiß git-ftp.sh, welche Dateien unterschiedlich sind. Kein gewöhnlicher FTP-Client kann das.

git-ftp von Edward Z. Yang ist ein einfaches Skript, das in Python geschrieben wurde, um Dateien in ein Git-Repository über FTP hochzuladen, nur neue Dateien zu übertragen und alte Dateien zu entfernen.


3
Gibt es mit git-ftp eine Möglichkeit, nur ein Unterverzeichnis (z. B. den Veröffentlichungsordner von html5 boilerplate) in das angegebene ftp-Verzeichnis zu verschieben?
Bande

Und was ist, wenn mehrere Entwickler im Team sind? Ist es noch möglich, diese Skripte zu verwenden?
Trilliput

@Trilliput: Ein bisschen spät hier, aber ja, ein Zwischenserver / VM im Netzwerk als Ort, an den alle pushen, und dann: github.com/ezyang/git-ftp#using-a-bare-repository-as-a -proxy
Pranav 3

github.com/banago/PHPloy macht ebenfalls eine ähnliche Sache, funktioniert aber mit Submodulen, mit denen einige der genannten Tools möglicherweise zu kämpfen haben.
Simon East

Das Hauptproblem mit git-ftp (nicht sicher, ob Skript oder Python) Ich habe versucht, es war sehr schlimm, wenn große Teile von Dateien und eine lange Liste von Dateien hochgeladen wurden.
Indianwebdevil

14

Wenn Sie die grafische Benutzeroberfläche bevorzugen, verwenden Sie SourceTree. Sie können problemlos eine benutzerdefinierte Aktion einrichten, die das oben erwähnte git-ftp verwendet. Eine kurze Beschreibung zum Setup (für Mac) unter Push a Git Repository to a FTP

Geben Sie hier die Bildbeschreibung ein


@ Julix Für den genannten Artikel.
Geri Borbás

11

Ich habe festgestellt, dass PHPloy ein großartiges Tool zum Senden Ihrer Git-Commits an Remote-Server über FTP ist. Es funktioniert über die Befehlszeile und ist in PHP geschrieben (und erkennt sogar Änderungen in Submodulen).

https://github.com/banago/PHPloy

git commit ...
phploy -s staging
phploy -s production

Getan!

(Haftungsausschluss: Nachdem ich es eine Weile verwendet habe, habe ich jetzt einige Code-Patches und Verbesserungen beigesteuert, die es Windows-kompatibel machen.)


10

Wenn Sie auf einem Mac arbeiten und Transmit haben, würde ich das folgende git-tranmit-Skript empfehlen ( https://gist.github.com/379750 ). Es verwendet DockSend, um nur die zuletzt aktualisierten Dateien zu senden. Wenn Sie mit DockSend nicht vertraut sind, besuchen Sie http://www.panic.com/blog/2010/11/15-secrets-of-transmit/ .

Konfiguration:

  1. cp git-transit / usr / sbin /.
  2. cd / usr / sbin
  3. chmod + x git-send
  4. Setup Drop Send für Ihre Live-App
  5. Führen Sie git-send in Ihrem Git-Repository aus.

1
Dieses Skript ist ziemlich umständlich bei der Auswahl der zuletzt aktualisierten Dateien. Schauen Sie sich diese Gabel für eine elegantere Lösung an.
Quickshiftin

Darüber hinaus möchten Sie möglicherweise nur verfolgte und nicht festgeschriebene Dateien übertragen. Hier ist ein winziges Skript, das genau das tut: gist.github.com/borisdiakur/37b8f512f6f8865b79c7
borisdiakur

5

Genau dafür ist Git nicht gedacht. Wenn Ihre Quelle jedoch nicht kompiliert oder verarbeitet werden muss, z. B. eine Website, die ausschließlich aus HTML- und Javascript-Dateien und dergleichen besteht, können Sie einen Klon des Repos auf Ihrem Webserver haben und git pullvom Server aus verwenden, um ihn aufrechtzuerhalten -miteinander ausgehen. Hinweis, ich würde Ihren Webserver so konfigurieren, dass das Git-Verzeichnis und dergleichen ausgeblendet wird. Und das ist erst der Anfang der Sicherheitsbedenken.

Wenn Sie irgendeine Art von Kompilierung oder Verarbeitung haben, sollten Sie sich Ant , Maven , BuildR , SBT usw. ansehen .


29
Das einzige Problem dabei ist, wenn Sie keinen Zugriff auf den Produktionsserver haben, dh es handelt sich möglicherweise um einfaches Shared Hosting mit nur FTP-Zugriff.
dodgy_coder

4

Sie können Deployhq.com verwenden, es funktioniert wie ein Zauber. Sie müssen lediglich Ihr Repository und Ihr FTP-Konto einrichten.

Sie haben derzeit folgende Versionskontrollsysteme:

Git, Subversion, Mercurial.

Mit gehostetem Repository

  • GitHub
  • Bit Bucket
  • GitLab
  • Codebasis

Geben Sie hier die Bildbeschreibung ein




1

Hier gibt es ein Ruby-Skript - Ruby Git-Deployment über FTP oder SSH, das nur die geänderten Dateien im Git-Repo über FTP oder SSH hochlädt.

Wie in einer anderen Antwort erwähnt, ist hier das Python-Skript git-ftp.py, das eine ähnliche Funktion ausführt .

Und hier ist die Shell-Skript-Version von git-ftp .

Es gibt auch ein Ruby Gem-Projekt namens git-deploy, mit dem Sie eine benutzerdefinierte Bereitstellung über eine Git-Fernbedienung mithilfe des git pushBefehls einrichten können, genau wie bei den Heroku- und Azure-Diensten. In diesem Fall müssen Sie möglicherweise benutzerdefinierte Methoden für die Bereitstellung über FTP schreiben. Ich gehe davon aus, dass Sie über SSH-Zugriff auf Ihren Produktionsserver verfügen.


0

Wenn Sie Code in die Produktion einbauen, empfehle ich die Verwendung eines "Installationsprogramms" wie eines RPM-Pakets, um Ihren Code zu installieren. Auf diese Weise wird die Version mit einem Stempel versehen, und Sie können das Installationspaket nutzen, um Aktualisierungen des Produktionscodes zu unterstützen. Git ist nicht wirklich für die Unterstützung von Produktionsinstallationen konzipiert, sondern soll Änderungen am Code selbst verfolgen.

In jedem Fall können Sie mit einem .RPM (oder EXE oder was auch immer) es einfach per FTP auf das Produktionssystem übertragen und wie jedes andere Paket installieren.


5
Nun, Git kann in der Realität ziemlich gut für diesen Zweck eingesetzt werden. Überprüfen Sie das Tag und erstellen Sie Hooks nach dem Auschecken, nach dem Zusammenführen usw., um alle erforderlichen Installationsverfahren durchzuführen. Früher haben wir RPM-Pakete verwendet, aber nach dem Wechsel zu Git war es einfach übertrieben.
d11wtq

0

Fügen Sie es als Fernbedienung hinzu, und Sie können darauf pushen. Es reicht jedoch nicht aus, nur Code zu pushen. Es muss mit dem Arbeitsbaum zusammengeführt werden. Der einfachste Weg ist, in die andere Richtung zu gehen, einen funktionierenden Baum auf dem Server zu haben und diesen abzurufen und zusammenzuführen.



0

Ich hatte große Mühe, das herauszufinden. Ich habe einen einfachen Weg gefunden, dies aus verschiedenen Quellen zu erreichen ( git-ftpINSTALL , git-ftpUPLOAD , git-ftpIssue , git-ftpPUSH ). Sie können als Referenz lesen, aber es besteht keine Notwendigkeit, da ich den schrittweisen Prozess unten erwähnt habe.

Das erste zuerst: Installieren Sie Git and Curl mit Brew unter MAC OS

brew install git
brew install curl --with-ssl --with-libssh2
brew install git-ftp

Führen Sie die folgenden Befehle aus:

git clone https://github.com/git-ftp/git-ftp.git
cd git-ftp
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install

Aktualisierung mit git

git pull
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install

Konfiguration

git config git-ftp.url YourFtpServerName.Net
git config git-ftp.user FtpUserName
git config git-ftp.password YourPassword

Laden Sie alle Dateien hoch

git ftp init

Oder wenn die Dateien schon da sind

git ftp catchup

Arbeiten und bereitstellen

echo "Hello StackOverflow" >> index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"
git ftp push

Wenn ein Fehler auftritt: pathspec 'index.txt' stimmte nicht mit Dateien überein, die git bekannt sind . Dies bedeutet, dass die Datei noch nicht bereitgestellt wurde. Fügen Sie die Datei hinzu und versuchen Sie es mit Commit.

git add application/libraries/index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"

Hoffe das hilft.


0

Sie können FTPloy versuchen ...

https://ftploy.com

"Push-Änderungen an GitHub oder Bitbucket."

"Änderungen automatisch auf Ihrem Server bereitstellen"

Sie haben ein kostenloses Projekt, mit dem Sie es ausprobieren können. Ich benutze derzeit für eine kleine PHP-Website und es funktioniert ganz gut. Ein paar Fehler auf der Seite, aber es ist ein aktives Projekt, also arbeiten sie zumindest daran.


1
Ich habe diese Antwort vorzeitig gepostet. FTPloy ist nicht ganz "produktionsbereit" und es gibt viele Fehler. Ich konnte es nicht zum Laufen bringen. Ich verwende DeployHQ, was sehr gut funktioniert.
Dave Thompson

0

Überprüfen Sie https://gitftp-deploy.com/, ob Sie unter MacOS arbeiten und GUIs mögen.

Es ist eine nette kleine Anwendung, die Git verwendet, um Änderungen zu verfolgen und nur die geänderten Dateien mit FTP hochzuladen.

Besonders praktisch, wenn Sie nicht gerne monatliche Gebühren für Dutzende kleinerer Projekte mit kleinen Teams zahlen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.