2011-01-20 23 views
46

Tengo un repo en GitHub. Recientemente descubrí las páginas de GitHub y quiero usarlas.
Me gustaría crear esta nueva rama y luego, cuando sea necesario, confirmar en la rama master o en la rama gh-pages.git branch: gh-pages

¿Cómo puedo hacer esto? ¿Tengo que crear otra carpeta dentro de mi repositorio?

+0

'origin' no es una rama, es un control remoto. Quieres decir 'maestro'. – Dustin

+0

Ah sí, tienes razón. Voy a editar – rubik

+0

Ver [mi respuesta relacionada] (http://stackoverflow.com/a/29616287/946850) y un [writeup] (http://krlmlr.github.io/git-subbranch) para una solución que consiste en crear un clonar en una subdirección de la copia de trabajo. – krlmlr

Respuesta

25

Puede que le resulte útil este tutorial:

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

Para mí, este enfoque parece más simple que hacer un git checkout gh-pages cada vez que desee editar el contenido de gh-páginas. Déjame saber lo que piensas^_^

Edit: He actualizado el enlace del tutorial - gracias @Cawas. El tuotial de edad (no se recomienda) fue https://gist.github.com/825950

+1

@rubik es mejor utilizar la segunda sugerencia del mismo autor: https://gist.github.com/833223 – cregox

+0

GitHub acaba de habilitar el uso de [cualquier rama y directorio como fuente de los documentos] (https: // github.com/blog/2228-simpler-github-pages-publishing). Ya no tiene que usar 'gh-pages'. –

7

En su clon local de hacer,

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

Entonces, git checkout gh-pages y escribir sus páginas. git push origin gh-pages cuando esté listo para publicar las páginas.

+0

Sí, pero ¿dónde pongo mis páginas? ¿Cómo sabe git qué páginas poner en gh-páginas? – rubik

+2

'git checkout gh-pages' significa que ha cambiado a la rama llamada 'gh-pages'. Github recoge cualquier cambio que compromete con esta rama para compilar sus páginas github. Para volver a la rama 'master' (presumiblemente su código fuente), haga 'git checkout master'. –

+0

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

32

Las versiones más recientes de git tienen una alternativa al método git symbolic-ref que explicó Chandru. Esto evita tener que usar los comandos de nivel más bajo.

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

No entiendo esto. ¿Cómo se relaciona esto con 'symbolic-ref'? – cregox

+0

@Cawas Anteriormente, la única forma de hacer esto era usar 'git symbolic-ref' como en la respuesta de Chandru. Ahora 'git checkout --orphan' es la forma correcta. – Arrowmaster

+0

pero, @arrow, cuando veo los documentos sobre ambos, ¡parece que no hacen lo mismo! sobre 'symbolic-ref' dice" * los enlaces simbólicos ahora están en desuso y las referencias simbólicas se usan por defecto * "mientras que sobre 'huérfano' dice" * Esto puede ser útil cuando se quiere publicar el árbol desde una confirmación sin exponer su historia completa * ". Para mí eso es todo lo contrario. ¡Estás creando una rama completamente separada en lugar de hacer que una sea el espejo de la otra! – cregox

-1

Son sus GH-páginas y la rama principal que tiene exactamente la misma estructura de carpetas? Si este es el caso, ¿por qué quieres tener dos sucursales? ¡solo mantenga una rama de gh-páginas! pero si por alguna razón quieres tener ambas ramas sincronizadas constantemente, tu mejor opción es usar git rebase. Ve aquí:
http://lea.verou.me/2011/10/easily-keep-gh-pages-in-sync-with-master/

Puede también cereza recoger sólo los archivos que necesita de maestro y empujarlos hacia GH-páginas utilizando un caso de uso especial de git checkout. Ver aquí:
http://oli.jp/2011/github-pages-workflow/#gh-pages-workflow
http://nicolasgallagher.com/git-checkout-specific-files-from-another-branch/

haber tenido que hacer frente al mismo problema que he llegado a encontrar que la GH-páginas por lo general terminan teniendo una base de código diferente al maestro. En otras palabras, gh-pages solo debe incluir el contenido de la carpeta dist/build/publish de su proyecto, mientras que master incluirá sus archivos de configuración, scripts sin minar y estilos, etc.

Mi sugerencia sería crear gh-páginas como una rama --orphan y solo incluye el material listo para publicación en ella. Debería clonar desde su maestro en un directorio local diferente, usar git checkout --orphan gh-pages para crear gh-páginas y luego eliminar todos los archivos innecesarios usando git rm -rf ..Desde allí, puede continuar y presionar gh-pages después de haber agregado sus archivos de solo publicación. Consulte la documentación Github para más información:
https://help.github.com/articles/creating-project-pages-manually/

Buena suerte

+3

GitHub acaba de habilitar el uso de [cualquier rama y directorio como fuente de los documentos] (https://github.com/blog/2228-simpler-github-pages-publishing). Ya no tiene que usar 'gh-pages'. –

0

La forma típica es cambiar ramas: git checkout master si desea trabajar en amo y git checkout gh-pages si desea trabajar en gh-pages.

Comenzando con git 2.5, puede tener ambas ramas desprotegidas al mismo tiempo (en diferentes directorios). Ver https://github.com/blog/2042-git-2-5-including-multiple-worktrees-and-triangular-workflows. Configuración a través del git worktree add -b gh-pages ../gh-pages origin/gh-pages.

Bono: Si el contenido de un subdirectorio de su master salida es el contenido de gh-pages, utilice el guión previsto en https://github.com/X1011/git-directory-deploy.

1

Hay otra solución a su problema: Olvídese de gh-pages y bifurcación; Coloque sus archivos estáticos que se supone que se deben servir en el directorio /docs y luego vaya a la configuración de su proyecto y dígale a github que brinde contenido /docs.

Para más información echa un vistazo a this

2

publicar un sitio estático como sigue:

git subtree push --prefix www origin gh-pages 

Dónde www es el directorio raíz del documento en el que los archivos son estáticos. Su sitio estático ahora está en vivo en: https://[user_name].github.io/[repo_name]/