2011-01-20 17 views
46

Ho un repository su GitHub. Recentemente ho scoperto le pagine di GitHub e voglio usarle.
Vorrei creare questo nuovo ramo e quindi, quando è necessario, eseguire il commit sul ramo master o sul ramo gh-pages.git branch: gh-pages

Come posso fare questo? Devo creare un'altra cartella all'interno del mio repository?

+0

'origin' non è un ramo, è un telecomando. Intendi "maestro". – Dustin

+0

Ah sì, hai ragione. Io modifico – rubik

+0

Vedere [la mia risposta correlata] (http://stackoverflow.com/a/29616287/946850) e un [writeup] (http://krlmlr.github.io/git-subbranch) per una soluzione che consiste nel creare un clonare in un sottodirectory della copia di lavoro. – krlmlr

risposta

25

Si potrebbe trovare questo tutorial utile:

Setup GitHub Pages "gh-pages" branch and "master" branch as subfolders of a parent project folder ("grandmaster").

Per me questo approccio sembra più semplice quindi fare un git checkout gh-pages ogni volta che si desidera modificare il contenuto gh-pages. Fammi sapere cosa ne pensi^_^

Modifica: Ho aggiornato il collegamento del tutorial - grazie a @Cawas. Il vecchio tuotial (non raccomandato) era https://gist.github.com/825950

+1

@rubik in realtà è meglio usare il secondo suggerimento dallo stesso autore: https://gist.github.com/833223 – cregox

+0

GitHub ha appena abilitato l'utilizzo di [qualsiasi diramazione e directory come origine per i documenti] (https: // github.com/blog/2228-simpler-github-pages-publishing). Non devi più usare 'gh-pages'. –

7

Sul vostro clone locale di fare,

git symbolic-ref HEAD refs/heads/gh-pages 
rm .git/index 
git clean -fdx 

Poi, git checkout gh-pages e scrivere le tue pagine. git push origin gh-pages quando sei pronto per pubblicare le pagine.

+0

Sì, ma dove inserisco le mie pagine? Come fa Git a sapere quali pagine mettere in gh-pages? – rubik

+2

'git checkout gh-pages' significa che sei passato al ramo chiamato 'gh-pages'. Qualsiasi modifica che ti impegni a questo ramo viene scelta da github per creare le tue pagine github. Per tornare al ramo 'master' (presumibilmente il tuo codice sorgente), esegui 'git checkout master'. –

+0

correlati: http://stackoverflow.com/questions/847609/create-a-git-symbolic-ref-in-remote-repository – cregox

32

Le versioni più recenti di git hanno un'alternativa al metodo git symbolic-ref spiegato da Chandru. Questo evita di dover usare i comandi di livello inferiore.

git checkout --orphan gh-pages 
git rm -rf . 
+0

Non capisco. In che modo tutto ciò è collegato a 'symbolic-ref'? – cregox

+0

@Cawas In precedenza, l'unico modo per farlo era usare 'git symbolic-ref' come nella risposta di Chandru. Ora 'git checkout --orphan' è il modo giusto. – Arrowmaster

+0

ma, @arrow, quando vedo i documenti su entrambi non sembrano fare la stessa cosa! su 'symbolic-ref' si dice" * i link simbolici sono ora deprecati e i riferimenti simbolici sono usati di default * "mentre su' orphan' dice "* Questo può essere utile quando si desidera pubblicare l'albero da un commit senza esporne il relativo storia completa * ". Per me è il contrario. Stai creando un ramo completamente separato invece di farne uno lo specchio dell'altro! – cregox

-1

Sono i tuoi GH-pagine e branch master che ha esattamente la stessa struttura di cartelle? Se questo è il caso, perché vuoi anche avere due rami? basta mantenere un ramo gh-pages! ma se per qualsiasi motivo si desidera avere entrambe le filiali che sono costantemente sincronizzate, la soluzione migliore è utilizzare git rebase. Vedi qui:
http://lea.verou.me/2011/10/easily-keep-gh-pages-in-sync-with-master/

È possibile anche ciliegia scegliere solo i file necessari da maestro e spingerli sul gh-pagine utilizzando uno speciale caso d'uso di git checkout. Vedi qui:
http://oli.jp/2011/github-pages-workflow/#gh-pages-workflow
http://nicolasgallagher.com/git-checkout-specific-files-from-another-branch/

Avendo ottenuto di affrontare con lo stesso problema sono venuto a scoprire che gh-pagine di solito finiscono per avere una base di codice diverso da padrone. In altre parole, gh-pages dovrebbe includere solo il contenuto della cartella dist/build/publish del tuo progetto, mentre il master includerà i tuoi file di configurazione, script non modificati e stili ecc.

Il mio suggerimento sarebbe quello di creare gh-pages come ramo --orphan e includere solo il materiale pronto per la pubblicazione in esso. Dovresti clonare dal tuo master in una directory locale diversa, utilizzare git checkout --orphan gh-pages per creare gh-pages e quindi eliminare tutti i file non necessari utilizzando git rm -rf ..Da lì puoi andare avanti e passare a gh-pages dopo aver aggiunto i tuoi file di sola pubblicazione. fare riferimento alla documentazione di Github per ulteriori informazioni:
https://help.github.com/articles/creating-project-pages-manually/

Buona fortuna

+3

GitHub ha appena abilitato l'utilizzo di [qualsiasi diramazione e directory come origine per i documenti] (https://github.com/blog/2228-simpler-github-pages-publishing). Non devi più usare 'gh-pages'. –

0

Il modo tipico è quello di passare rami: git checkout master se si desidera lavorare su master e git checkout gh-pages se si desidera lavorare su gh-pages.

A partire da git 2.5, è possibile eseguire contemporaneamente il controllo di entrambi i rami (in diverse directory). Vedi https://github.com/blog/2042-git-2-5-including-multiple-worktrees-and-triangular-workflows. Impostazione tramite git worktree add -b gh-pages ../gh-pages origin/gh-pages.

Bonus: se il contenuto di una sottodirectory del checkout master è il contenuto di gh-pages, utilizzare lo script fornito a https://github.com/X1011/git-directory-deploy.

1

C'è ancora un'altra soluzione al problema: dimentica gh-pages e diramazione; Metti i file statici che devono essere pubblicati all'interno della directory /docs, quindi vai alle impostazioni del progetto e indica a github di servire il contenuto di /docs.

Per maggiori informazioni date un'occhiata al this

2

Pubblicare un sito statico come questo:

git subtree push --prefix www origin gh-pages 

Dove www è la directory root doc in cui i vostri file statici sono. Il tuo sito statico è ora disponibile all'indirizzo: https://[user_name].github.io/[repo_name]/