Habe mich zuletzt mit git beschäftigt. Leider finde ich keine Möglichkeit, ein aktuelles git Repository auf meinem Webserver zu kopieren / zu deployen / zu veröffentlichen. Irgendwie verstehe ich nicht den Hype um git, wenn es keine Möglichkeit gibt, den aktuellen PHP - Code auf meinen Webserver hochzuladen. Alles, was ich finden konnte, dreht sich um GitHub. Aber ich möchte auf keinen Fall meinen Code öffentlich stellen.
git Deployment auf Webserver möglich?
Antworten |
Anmeldungsdatum: Beiträge: 366 |
|
Anmeldungsdatum: Beiträge: 7657 |
Wenn du auf deinem Webserver keine Shell und kein Git hast dann sind die Möglichkeiten eben sehr, sehr, äh... begrenzt. Da musst du dann auf Krücken wie ftpfs o.ä. ausweichen, nicht schön. Aber vielleicht meinst du ja was anderes... Webhoster die einen ordentlichen SSH Zugang anbieten gibts wie Sand am Meer und vServer kosten auch nix... da kannst du dann machen was du willst. GitHub ist jedenfalls nicht notwendig, gibt ja auch GitLab oder Gitea oder wenn kein Webinterface gewünscht ist auch einfach nur blankes git. Aber wenns nur ftp Zugang gibt, machst git eben rein lokal und schubbst das dann mit lftp mirror o.ä. hoch. Ganz altmodisch... (Dabei beachten was mit dem .git Verzeichnis passiert, sonst ists am Ende eben doch öffentlich, auf dem eigenen Webserver) |
(Themenstarter)
Anmeldungsdatum: Beiträge: 366 |
Habe zwar SSH Zugang zum Webserver, möchte aber da nicht rumpfuschen. Habe mir mehrere Anleitungen für Installation auf Server angeschaut. Das Ganze erscheint mir mehr als umständlich, zumal - wenn ich das richtig verstanden habe - zunächst "nur" ein entferntes Repository angelegt wird. Weitere Schritte sind dann noch notwendig, um den Code dahin zu bekommen, wo er hin soll. Was ist das für eine umständliche Handhabung? - Da kann ich ja gleich beim traditionellen FileZilla bleiben. ☹ Mir erscheint git wie ein Auto ohne Räder, damit kann man gar kein Webprojekt umsetzen.
Wäre zumindest eine Möglichkeit, aber git kann ja nur das Repository exportieren und nicht den aktuellen Checkout. Damit scheitert diese Möglichkeit. |
Anmeldungsdatum: Beiträge: 11179 Wohnort: München |
Dann lern doch wie man es richtig macht statt zu pfuschen 😛 Git ist in erste Linie ein Versionsverwaltungssystem, wenn du auf einen Push hin Daten auf dem Server verteilen willst, kannst du Git Hooks nutzen - schau dir z.B. mal https://medium.com/@francoisromain/vps-deploy-with-git-fea605f1303b an. |
(Themenstarter)
Anmeldungsdatum: Beiträge: 366 |
Bin gerne bereit, etwas dazuzulernen. Mir geht aber nicht ein, weshalb ich zusätzlich zu meinem lokalen Repository ein entferntes Repository einrichten muss (= Aufwand Einrichtung + Aufwand Pflege), und dann nochmals Aufwand zu haben, um den Code dahin zu bekommen, wo er hingehört. Das ist nicht gerade wirtschaftlich. Nachdem ich mich über die Weihnachtsfeiertage mit GIT beschäftigt habe, kann ich heute nur ernüchternd feststellen, dass es für meine Belange völlig unbrauchbar ist. Bin ehrlich gesagt ziemlich perplex, dass mit GIT ein simples Deployment gar nicht möglich ist. Warum kann man nicht einfach von einem lokalen Repository aus den Code per SFTP/SSH auf den Webserver senden? |
Anmeldungsdatum: Beiträge: 7657 |
Kannst du - musst dir das entsprechende Script dazu eben schreiben. Ich mache das auch nicht mit Hooks sondern mit einem Script (serverseitig). Altmodisch aber transparent. Und manchmal will man ja doch nicht, daß das gepushte sofort "live" ist. Wenn man den Push von Hand anstoßen kann dann eben auch die nachträgliche Liveschaltung. Ich glaube wir reden hier ein wenig aneinander vorbei, denn das was die Versionsverwaltung unter Push versteht, ist das Übertragen des gesamten Reposity incl. History und dazu muss die Gegenseite einfach auch die Versionsverwaltung verstehen. Das kann ja auch mal in die umgekehrte Richtung gehen, wenn du nicht am PC zuhause sondern von unterwegs was am Code bastelst, das am Repo vom Server eincheckst, und der PC zuhause sich das wieder zieht. Du willst am Server aber gar nicht das Repo / die Versionsverwaltung haben sondern nur den aktuellen Status Quo. Das Problem dabei ist daß das dann mit der Versionsverwaltung an sich - schlicht nix mehr zu tun hat. Die Kopie die du da deployen willst ist dann explizit nicht versionsverwaltet. Den Upload / Deploy kannst du mit jedem FTP/SCP/Client deiner Wahl als einfaches Shellscript selber lostreten, da brauchst du dich nicht in die Wirren des Git-Hooks-Systems reinzufuchsen. |
(Themenstarter)
Anmeldungsdatum: Beiträge: 366 |
Danke für die Erläuterung. Es stimmt, ich will die Versionsverwaltung ausschließlich lokal verwalten und nur den Code von der gewünschten Version auf den Server hochladen.
Genau daran hakt es aber bei mir. Ein Beispiel: cd Webseite git init git add index.html git commit -m "Erste Version" Diesen Stand lade ich auf den Webserver einfach mit FileZilla hoch - soweit OK, kein Problem. Nun bearbeite ich die git add index.html git commit -m "Ergänzungen eingefügt"
dann fehlt mir in git ein entsprechender git-Befehl, der mir die zweite Version auf den Server hochlädt. Stelle ich dann fest, dass die Vielleicht lässt sich dieser Workflow mit GIT gar nicht realisieren? - Falls nicht, gibt es ein anders Versionsverwaltungsprogramm für meinen Workflow? |
Anmeldungsdatum: Beiträge: 11179 Wohnort: München |
Normalerweise arbeitetet man mit mehreren Branches, d.h. du hast einen Basis-Zweig, in dem alles landet, was dir gefällt und daneben Entwicklungszweige, in denen du neue Dinge ausprobieren kannst. Damit kannst du jederzeit zu einem funktionierenden Stand zurückkehren, Änderungen, die an anderer Stelle an der Stabilen Version erfolgen sollen vorziehen usw. |
(Themenstarter)
Anmeldungsdatum: Beiträge: 366 |
Schon klar, aber das beantwortet nicht meine Frage. |
Anmeldungsdatum: Beiträge: 7657 |
git clone geht auch lokal. Du kannst also von deinem Projekt lokal zwei Kopien haben, das eine in dem du bastelst, das andere das nur den Commit-Zustand darstellt. Alternativ gibts mit git stash die Möglichkeit, Arbeitsversionen mal kurz wegzuschaufeln und danach wieder hervorzuholen. |
(Themenstarter)
Anmeldungsdatum: Beiträge: 366 |
git clone geht auch lokal? - Wie denn? In der Anleitung konnte ich dazu nichts finden. git clone --local ../export fatal: Repository '../export' existiert nicht. auch dies geht nicht: git clone -branch master ../export/ fatal: Repository 'master' existiert nicht. Dabei habe ich doch ein "master"-Repository: git status Auf Branch master nichts zu committen, Arbeitsverzeichnis unverändert
|
Anmeldungsdatum: Beiträge: 11179 Wohnort: München |
Die generelle Syntax wäre: git clone /pfad/zum/repository /pfad/zum/clone |
Anmeldungsdatum: Beiträge: 11179 Wohnort: München |
Dann muss ich das mal weiter Ausführen, wenn du die Kapitel zum Arbeiten mit Branches nicht selber liest: Man hat normalerweise einen "stabilen" Branch, in dem alles landet, was den Anforderungen entspricht (z.B. |
Anmeldungsdatum: Beiträge: 7657 |
Weil du eine HTML Datei als Beispiel nennst, hast du auch Code oder nur Text in deinem Projekt? Bei einer reinen Textanwendung wirst du vielleicht mit einer Wikisoftware glücklicher? Da gibts dann Versionierung aber keine Branches und oft auch kein Gesamtprojekt (sondern jede Datei ein Projekt für sich und jeder Commit immer nur auf eine Datei) aber dafür kann man sehr visuell im Browser editieren/arbeiten... und meist reicht das dann auch schon, auch für Großprojekte a la Wikipedia. Bei Code hast du halt (fast) immer auch die Querabhängigkeiten zwischen den einzelnen Dateien. Vielleicht ist es in deinem Fall, einfach das falsche Werkzeug? |
(Themenstarter)
Anmeldungsdatum: Beiträge: 366 |
Ach, jetzt kapier ich! ☺ Habe mir zwischenzeitlich ein YouTube Video angeschaut, in dem das mit den Branches klarer erklärt wird. In dem Moment, wo ich den Branch wechsle, hat die lokale Danke! |