Frage

Ich entwickle eine jQuery-plugin, das hosting auf GitHub.Es hat eine demo-enthalten, von denen ich manuell kopieren und schieben die Filiale gh-pages, was ich möchte, zu tun haben, ist es so, wenn ich drücken Sie eine zu ändern master es wird automatisch geschoben zu gh-pages, oder zumindest ein setup, wo Sie sind gespiegelt.

Ich habe das schon gesehen Frage aber nicht sicher, ob es wirklich beantwortet meine Frage mit Hinblick auf diese Anforderungen:

  1. Ich benutze Tower, Ich nicht dagegen, mit dem terminal (Mac), um änderungen an der Konfiguration, so lange, wie die Lösung funktioniert mit diesem GUI.
  2. Ich will nur dieses 'spiegeln' auf bestimmte repos die nicht auf allen von Ihnen auf meinem Rechner.

Cheers

War es hilfreich?

Lösung

git checkout gh-pages
git merge master
git push origin gh-pages

Andere Tipps

Fügen Sie den folgenden 2 Zeilen zur [remote "origin"] Abschnitt von .git/config:

push = +refs/heads/master:refs/heads/gh-pages
push = +refs/heads/master:refs/heads/master

Jedes Mal, wenn Sie push Es wird den Master automatisch auf GH-Seiten drücken. Ich benutze das für die JQuery Lifestream -Projekt.

Tun Sie nicht, was Denbuzze oben vorschlägt!! Das + (Plus-Zeichen) im Push macht es leise, nicht schneidende Updates zu akzeptieren. Ich fand heraus, dass dies schwerwiegende Weise dazu führen kann, dass die Arbeiten verloren gehen, indem es zu baumelnden Commits führt. Das einfache Entfernen der Pluszeichen macht dies zu einem sichereren Ansatz.

push = refs/heads/master:refs/heads/gh-pages
push = refs/heads/master:refs/heads/master

Anstatt ein Force -Update zu verursachen, wird dies zu einer Warnung und Pull -Vorschläge führen

To https://github.com/someuser/repo.git
 ! [rejected]        master -> gh-pages (fetch first)
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/someuser/repo.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Ich füge weitere Erklärungen hinzu zu @denbuzze und @Mcsdwvl Antworten.

Wenn Sie beide drängen möchten master und gh-pages automatisch jedes Mal, wenn Sie ausführen git push origin, Sie möchten wahrscheinlich der Git -Konfiguration Ihres Repo einen RefSpec hinzufügen.

Also nach dem Angaben Git-SCM-Buch, Sie können zwei hinzufügen Refcs, durch Hinzufügen von zwei push Werte für die Repo -Konfigurationsdatei .git/config:

[remote "origin"]
url = https://github.com/<github_user>/<repo_name>
      fetch = +refs/heads/*:refs/remotes/origin/*
      push = refs/heads/master:refs/heads/master
      push = refs/heads/master:refs/heads/gh-pages

Das wird a verursachen git push origin zu:

  1. Schieben Sie den Einheimischen master Abzweigung zur Fernbedienung master Zweig
  2. Schieben Sie den Einheimischen master Abzweigung zur Fernbedienung gh-pages Zweig

standardmäßig.

Notiz: Verwendung einer + Bevor die Spezifikation zum Repo drückt. Verwenden Sie es mit Vorsicht:

Das Format des RefSpec ist optional +, gefolgt von <src>:<dst>, wo <src> ist das Muster für Referenzen auf der entfernten Seite und <dst> Dort werden diese Referenzen lokal geschrieben. Das + Sagt Git, die Referenz zu aktualisieren, auch wenn sie kein schneller Vorlauf ist.

Ich persönlich mag wickeln Sie diese in eine alias:

alias gpogh="git checkout gh-pages && git merge master && git push origin gh-pages && git checkout -"

Dies spiegelt Ihren master gh-pages, drückt auf github, schaltet dann wieder die vorherigen Zweig, an dem Sie gearbeitet.

Oder Sie können einfach die CMD unten verwenden. Dadurch wird Ihre lokale Master-Filiale zu GH-Pages Master Branch weitergegeben.git push -f origin master:gh-pages

verpflichten und drücken meistern..

dann :

git checkout gh-pages  // -> go to gh-pages branch
git rebase master // bring gh-pages up to date with master
git push origin gh-pages // commit the changes
git checkout master // return to the master branch

AKTUALISIEREN: Mit GitHub können Seiten aus jeder gewünschten Niederlassung und Verzeichnis veröffentlicht werden.


Es war für mich viel einfacher, das zu benutzen gh-pages Zweig als Meister. "Meister" hat nichts Magisches; Es ist nur ein weiterer Zweigname. Dort ist Etwas Magisches an GH-Seiten, denn dort sucht Github nach Index.html, um Ihre Seite zu bedienen.

Lesen Sie mehr in Meine andere Antwort zu diesem Thema.

Verwendung gh-pages Da ist der Meister auch einfacher als Unterbaum, die einfacher sind als Spiegelung. Du könntest benutzen git subtree wie beschrieben hier oder hier: Wenn Sie ein Verzeichnis haben, das Ihre Demo enthält, können Sie dieses Verzeichnis auf die gh-branch mit einem Befehl. Nehmen wir an, Sie nennen das Verzeichnis gh-pages Dinge klar machen. Dann, nachdem Sie Ihre Änderungen verpflichtet und gedrängt haben master, Führen Sie dies aus, um die GH-Seiten zu aktualisieren:

git subtree push --prefix gh-pages origin gh-pages

Das Problem ist, ob Ihre Dateien in gh-pages Siehe Dateien in anderen Verzeichnissen außerhalb. Symlinks funktionieren nicht, also musst du Kopieren Dateien im Verzeichnis, die als GH-Seiten dienen.

Wenn du verwenden gh-pages als Meister, Dieses Problem wird nicht auftreten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top