2012-12-24 15 views
16

Ho creato un meraviglioso GitHub Pages website for my little project e ho aggiunto altre pagine nel ramo gh-pages. Il mio problema è che, ogni volta che rigenera il sito Web da "Impostazioni => Generatore di pagine automatico", tutto viene ripulito e devo ripristinare i file manualmente.Come impedire a GitHub Pages "Automatic Generator" di rimuovere tutto prima di rigenerare il sito?

C'è un modo per prevenire o aggirare questo problema?

Sarebbe stato molto meglio se il Generatore automatico stesse semplicemente sovrascrivendo la sua roba senza rimuovere i file esistenti.

risposta

36
  1. Verificare il ramo gh-pages.
  2. mkdir _layouts
  3. mossa index.html a _layouts
  4. modificare _layouts/index.html sostituire il codice HTML interno dei contenuti sezione con {{content}}
  5. rendere nuovo file index.md
  6. Incolla contenuti Markdown del generatore automatico di pagina in index.md
  7. anteponendo quanto segue a index.md

    --- 
    layout: index 
    --- 
    
  8. creare _config.yml
  9. sono i seguenti in _config.yml:

    markdown: kramdown 
    kramdown: 
        auto_ids: true 
    

    questo passaggio è quello di abbinare Markdown sintassi di GitHub

  10. aggiungere & Conferma modifiche, e quindi spingere ramo indietro per github.

Ora si può semplicemente modificare index.md dal gh-branch in your github source browser e sarà l'aggiornamento utilizzando jekyll automaticamente e non pasticciare con qualcosa nella tua GH-ramo.

È inoltre possibile modificare più elementi nel layout utilizzando il segnaposto {{page.varname}} e aggiungere varname:your text all'intestazione del numero index.md.

+3

esattamente quello che stavo cercando, grazie! Ho dovuto cambiare 'layout: index' a' layout: index' per farlo funzionare comunque. Altrimenti ricevo un errore "deep_merge". – chris838

+2

perchè questo non è nel tutorial di github pages !!!! Grazie. – si28719e

+1

Questa dovrebbe essere la risposta accettata. – Matthew

0

No, non possibile. GitHub cancella il repository gh-pages quando si esegue una "generazione". Il meglio che puoi fare è quello che stai facendo ora. Un'altra opzione potrebbe non essere quella di usare il generatore di pagine GitHub per cambiare gli stili, ma per trovare la fonte degli stili (probabilmente si trovano su GitHub da qualche parte) e cambiarli manualmente modificando le modifiche (sostituendo i file css e altre modifiche minori)

2

Bene, dopo alcuni tentativi ho trovato la soluzione.

Ho notato che l'unico file modificato per il mio sito era index.html, il resto del sito generato era lo stesso. All'interno di index.html c'era un tag <section>content</section> che conteneva l'html generato dal markdown.

Così ho creato due file header.inc e footer.inc, che contenevano la parte "statica" per la pagina dell'indice. La parte del contenuto dovrebbe essere stata generata dal file README.md.

Ho trovato che esiste un'API fornita da github a render a RAW markdown in raw mode in html.
Quindi, l'ultimo pezzo del puzzle era ottenere un permalink per il README.md del mio progetto, con il contenuto RAW; che mi è capitato di trovare here.

Così ho scritto questo simple bash script che rigenera l'index.html da solo, senza toccare il resto del sito:

#!/bin/sh 
PG_DIR=$(dirname $0) 
RAW_README_URL=https://raw.github.com/lviggiano/owner/master/README.md 
GITHUB_API_URL=https://api.github.com/markdown/raw 

cat $PG_DIR/header.inc 
curl -s $RAW_README_URL | curl -s --data-binary @- -H 'Content-Type: text/plain' $GITHUB_API_URL 
cat $PG_DIR/footer.inc 

Poi mi basta lanciare lo script come:

$ cd myproject 
$ git checkout gh-pages 
$ git pull origin gh-pages:gh-pages 
$ ./bin/autogen > index.html 
$ git commit -m "updated index.html from latest README.md" index.html 
$ git push origin gh-pages:gh-pages 

vedere l'implementazione dettagli here.

Ho provato con il layout "Leap Day"; ma suppongo che funzioni anche per gli altri.

0

È possibile configure Jekyll per saltare determinate directory con l'opzione exclude.

(Si noti che Jekyll ha un keep_files opzione -. Che è per i file nella directory destintation)

Problemi correlati