Legen Sie das Unterverzeichnis als Website-Stammverzeichnis auf Github-Seiten fest

73

Ich verwende Github Pages , um eine statische Website zu hosten und bereitzustellen.

Die statische Website hat die typische Verzeichnisstruktur für eine App:

|_ source
|_ build
   |_index.html
 .gitignore
 config.rb
 Gemfile
 ...
 README.MD

index.htmlist unter build/, also möchte ich das zum Standardpfad machen www.

Wenn Benutzer username.github.iodarauf klicken, wird der Inhalt in diesem Unterverzeichnis gerendert, und in der URL wird dennoch nicht "/ build" / angezeigt, da dieser als Stammordner festgelegt ist.

Anmerkungen:

  • Ich habe keine benutzerdefinierte Domain und plane auch nicht, eine für diesen Zweck zu erwerben. Wie Sie sehen, versuche ich, die von github bereitgestellte Standard-URL-Namenskonvention zu nutzen.
  • Weder Jekyll noch die automatische Seitengeneratorfunktion.
Oriol
quelle
Wie unter stackoverflow.com/questions/17797328/… angegeben , stellen Sie sicher, dass Sie den Git-Teilbaum installiert haben.
sbkm

Antworten:

58

Es gibt eine detaillierte Übersicht mit allen erforderlichen Schritten.

Das Wesentliche ist hier:
https://gist.github.com/cobyism/4730490


Aus dem Kern

Bereitstellen eines Unterordners für GitHub-Seiten

Manchmal möchten Sie, dass ein Unterverzeichnis in der masterVerzweigung das Stammverzeichnis der Verzweigung eines Repositorys ist gh-pages. Dies ist nützlich für Dinge wie Sites, die mit Yeoman entwickelt wurden , oder wenn Sie eine Jekyll-Site in der masterVerzweigung neben dem Rest Ihres Codes haben.

In diesem Beispiel tun wir so, als wäre der Unterordner mit Ihrer Site benannt dist.

Schritt 1

Entfernen Sie das distVerzeichnis aus der Projektdatei .gitignore(von Yeoman wird es standardmäßig ignoriert).

Schritt 2

Stellen Sie sicher, dass git Ihren Teilbaum kennt (den Unterordner mit Ihrer Site).

git add dist && git commit -m "Initial dist subtree commit"

Schritt 3

Verwenden Sie Subtree Push, um es an den gh-pagesZweig auf GitHub zu senden .

git subtree push --prefix dist origin gh-pages

Boom. Wenn Ihr Ordner nicht aufgerufen wird dist, müssen Sie dies in jedem der obigen Befehle ändern.


Wenn Sie dies regelmäßig tun, können Sie auch irgendwo in Ihrem Pfad ein Skript erstellen , das Folgendes enthält:

#!/bin/sh
if [ -z "$1" ]
then
  echo "Which folder do you want to deploy to GitHub Pages?"
  exit 1
fi
git subtree push --prefix $1 origin gh-pages

Damit können Sie Befehle eingeben wie:

git gh-deploy path/to/your/site
CodeWizard
quelle
Verwenden Sie stattdessen diese URL-Konvention: username.github.io/projectname. Richtig? Dazu müsste das Repo stattdessen in "Projektname" umbenannt werden, damit ich das Setup für Projektseiten ( help.github.com/articles/user-organization-and-project-pages ) verwenden kann, oder?
Oriol
ja. oder Sie können stattdessen eine benutzerdefinierte Domain verwenden
CodeWizard
1
In Ordung. Ich denke, das ist die einzige Lösung. Vielen Dank!
Oriol
1
Nach weiteren Recherchen gibt es keine Möglichkeit, das zu erreichen, was ich ursprünglich gefragt hatte. Sie müssen den Inhalt des Build-Ordners im Stammverzeichnis ablegen, wenn er unter username.github.io angezeigt werden soll. Andernfalls verwenden Sie die obige Lösung.
Oriol
1
gh-deployist kein gültiger Befehl mehr. Mein Unterordner ist der publicOrdner, in dem Firebase Sie standardmäßig zum Hosten auffordert.
Dhruv Ghulati
29

Seit August 2016 können Sie den /docsUnterordner des masterZweigs für Ihre Quellen verwenden.

Wenn Sie also Ihrem Site-Generator mitteilen können, dass er /docsanstelle von /buildIhnen verwendet werden soll, sind Sie fertig (ohne Teilbaum).

Hinweis: Wie von @thislooksfun im Kommentar ausgeführt, gilt dies nur für Projektseiten (wie <username>.github.io/<projectname>), nicht jedoch für Benutzer- oder Organisationsseiten (wie <name>.github.io).

Kpym
quelle
2
Es ist erwähnenswert, dass dies nur mit Websites funktioniert, die keine Benutzer / Organisationen sind. Genauer gesagt: "Um die Quelldateien Ihrer Site aus einem Ordner / docs in Ihrem Hauptzweig zu veröffentlichen, müssen Sie über einen Hauptzweig verfügen und Ihr Repository darf nicht dem Repository-Namensschema <Benutzername> .github.io oder <orgname> .github folgen. io "( help.github.com/articles/… )
thislooksfun
Beachten Sie auch, dass das System anscheinend nicht funktioniert, wenn Sie bereits ein anderes Repository <username>.github.iounter Ihrem Konto haben /docs. Sucht nur direkt nach index.html master. Siehe oben auf der Seite hier: help.github.com/articles/…
Programmierer
0

Irgendwie läuft die akzeptierte Antwort für mich nur beim ersten Mal. Wiederholen wirft Fehler.

Ich löse es, indem ich die folgenden Befehle ausführe:

  • git checkout --orphan gh-pages Git Referenz

  • git --work-tree build add --all Git Reference

  • git --work-tree build commit -m 'gh-pages'

  • Git Push Origin HEAD: Gh-Seiten --force

  • Git Checkout -f Master

roli roli
quelle
-2

Push-Dir wird es tun:

npm install push-direxample
push-dir --dir=build --branch=gh-pages
RobLoach
quelle