68 Stimmen

Github: Spiegelung von gh-pages auf master

Ich entwickle gerade ein jQuery-Plugin, das auf GitHub gehostet wird. Es enthält eine Demo, die ich manuell kopiere und in den Zweig schiebe gh-pages Ich möchte, dass, wenn ich eine Änderung an master wird sie automatisch auf gh-pages oder zumindest eine Einrichtung, in der sie gespiegelt werden.

Das habe ich schon gesehen Frage aber ich bin mir nicht sicher, ob es meine Frage in Bezug auf diese Anforderungen wirklich beantwortet:

  1. Ich benutze Turm Es macht mir nichts aus, das Terminal (Mac) zu benutzen, um Änderungen an der Konfiguration vorzunehmen, solange die Lösung mit dieser GUI funktioniert.
  2. Ich möchte diese "Spiegelung" nur für bestimmte Repos, nicht für alle Repos auf meinem Rechner.

Prost

108voto

christianvuerings Punkte 21072

Fügen Sie die folgenden 2 Zeilen in die [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 wird der Master automatisch auch auf gh-pages übertragen. Ich verwende dies für die jQuery Lifestream-Projekt .

67voto

Steve Punkte 5532
git checkout gh-pages
git merge master
git push origin gh-pages

28voto

MCSDWVL Punkte 281

Tun Sie nicht, was denbuzze oben vorschlägt !! Das + (Plus-Zeichen) in der Push-Funktion sorgt dafür, dass nicht-vorwärts gerichtete Aktualisierungen stillschweigend akzeptiert werden. Ich habe auf die harte Tour herausgefunden, dass dies unwiderruflich dazu führen kann, dass Arbeit verloren geht, weil es zu "Dangling Commits" führt. Das einfache Entfernen des Pluszeichens macht diesen Ansatz sicherer.

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

statt einer Zwangsaktualisierung wird nun eine Warnung und ein Pull-Vorschlag ausgegeben

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.

9voto

raviolicode Punkte 2117

Ich füge weitere Erklärungen zu @denbuzze y @MCSDWVL Antworten.

Wenn Sie beides auf master y gh-pages automatisch, wenn Sie das Programm git push origin möchten Sie wahrscheinlich einen Refspec in die Git-Konfiguration Ihres Repos aufnehmen.

Demnach ist nach der git-scm Buch können Sie zwei weitere RefSpecs durch Addition von zwei push Werte in der Konfigurationsdatei des Repos .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

Dies führt zu einer git push origin zu:

  1. Drücken Sie die lokale master Verzweigung zur entfernten master branche
  2. Drücken Sie die lokale master Verzweigung zur entfernten gh-pages branche

standardmäßig.

Hinweis : unter Verwendung eines + vor der Spezifikation bewirkt, dass ein Push in das Repositorium erzwungen wird. Verwenden Sie es mit Vorsicht:

Das Format der refspec ist eine optionale + gefolgt von <src>:<dst> donde <src> ist das Muster für Verweise auf der entfernten Seite und <dst> ist der Ort, an dem diese Verweise lokal geschrieben werden. T + weist Git an, die Referenz zu aktualisieren, auch wenn es sich nicht um einen Schnellvorlauf handelt.

3voto

dhulihan Punkte 10633

Ich persönlich verpacke dies gerne in einen Alias:

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

Dies spiegelt Ihren Master auf gh-pages auf Github gepusht und dann der vorherige Zweig, an dem Sie gearbeitet haben, wiederhergestellt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X