Github: Mirroring GH-pagine da padroneggiare
-
24-10-2019 - |
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:
- Torre , non mi dispiace usando il terminale (Mac) per apportare modifiche a config, a condizione che le opere di soluzione con questo GUI.
- Voglio solo che questa 'mirroring' su alcuni pronti contro termine, non su tutti loro sulla mia macchina.
Saluti
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:
- Spingere il ramo
master
locale al ramomaster
remota ??li> - Spingere il ramo
master
locale al ramogh-pages
remota ??li>
per impostazione predefinita.
Nota ??strong>: 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 ??strong> 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à.