Domanda

sto sviluppando un plugin jQuery che viene hosting su GitHub. Ha una demo incluso, di cui sto copiando manualmente e spingendo al gh-pages ramo, quello che mi piacerebbe fare è di avere così quando spingo una modifica a master viene spinto automaticamente gh-pages, o almeno di una configurazione in cui essi si rispecchiano.

ho già visto questo domanda ma non è sicuro se risponde realmente alla mia domanda in relazione a questi requisiti:

  1. Torre , non mi dispiace usando il terminale (Mac) per apportare modifiche a config, a condizione che le opere di soluzione con questo GUI.
  2. Voglio solo che questa 'mirroring' su alcuni pronti contro termine, non su tutti loro sulla mia macchina.

Saluti

È stato utile?

Soluzione

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

Altri suggerimenti

Aggiungere le seguenti 2 righe alla sezione [remote "origin"] di .git/config:

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

Ogni volta che si push che spingerà automaticamente master per GH-pagine. Sto usando questo per il jQuery Lifestream progetto .

non fanno quello denbuzze suggerisce sopra !! Il + (segno più) nella spinta rende accetta tranquillamente aggiornamenti non fastforward. Ho scoperto nel modo più duro che questo può causare irrevocabilmente lavoro da perso da che porta a commit penzoloni. La semplice eliminazione dei segni più rende questo un approccio più sicuro.

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

ora invece di provocare un aggiornamento forza questo causerà un avvertimento e tirare suggerimento

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.

io sono l'aggiunta di ulteriori spiegazioni a @denbuzze e @ risposte MCSDWVL .

Se si vuole spingere sia a master e gh-pages automaticamente ogni volta che si esegue git push origin, probabilmente si desidera aggiungere un Refspec alla configurazione del vostro git repository.

Quindi, secondo il git-scm libro , è possibile aggiungere due RefSpecs , con l'aggiunta di due valori push al file di configurazione repo .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

Questo causerà un git push origin a:

  1. Spingere il ramo master locale al ramo master remota
  2. Spingere il ramo master locale al ramo gh-pages remota

per impostazione predefinita.

Nota : utilizza un + prima che le cause di spec per forza di spinta verso il repo. Usare con cautela:

Il formato del refspec è un + opzionale, seguito da <src>:<dst>, dove <src> è il modello per i riferimenti sul lato remoto e <dst> è dove questi riferimenti saranno scritti a livello locale. Il + dice a Git aggiornare il riferimento, anche se non è un fast-forward.

Personalmente, come per avvolgere questo in un alias:

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

Questo rispecchia il tuo padrone a gh-pages, spinge a GitHub, quindi passa indietro il ramo precedente si stava lavorando.

oppure si può semplicemente utilizzare il cmd seguito, questo spingerà il tuo branch master locale per gh-pagine principale ramo. git push -f origin master:gh-pages

commit e spinta per maestro ..

quindi:

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

Aggiorna : GitHub consente ora le pagine di essere pubblicato da qualsiasi ramo e directory che si desidera.


E 'stato molto più facile per me di utilizzare il ramo gh-pages come master. Non c'è nulla di magico "master"; è solo un altro nome del ramo. Ci è qualcosa di magico GH-pagine, perché è lì che GitHub è alla ricerca di index.html per servire la vostra pagina.

Per saperne di più in mia altra risposta su questo argomento .

Utilizzo gh-pages come master è anche più facile di sottostrutture, che sono più facile di mirroring. Si potrebbe utilizzare git subtree come descritto qui o qui : se si dispone di una directory che contiene il vostro demo, si può spingere quella directory al gh-branch con un solo comando. Diciamo che è il nome della directory gh-pages di fare chiarezza. Poi, dopo aver commesso e spinto le modifiche master, eseguire questo per aggiornare GH-pagine:

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

Il problema è se i file in gh-pages si riferiscono ai file in altre directory di fuori di esso. Link simbolici non funzionano, quindi dovrete per copiare i file nella directory che funge da GH-pagine.

Se uso gh-pages come master , questo problema non si verificherà.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top