¿Cuál es la forma más fácil de desplegar una carpeta en una sucursal en git?

Tengo una carpeta en mi twig master llamada public/ , ¿cuál sería la forma más fácil de copyr sus contenidos al directory raíz en una twig diferente, como gh-pages ?

Un truco muy bueno ilustrado en las páginas de Generate GitHub en un submodule de Blind Gaenger (Bernd Jünger) es declarar una twig como un submodule para otra twig.

Entonces, si su contenido public estaba en su propia sucursal huérfana (como el contenido de gh-pages generalmente se mantiene en su propia sucursal huérfana), entonces podría:

  • declarar public como un submodule de su repos principal en la twig master
  • declare el mismo público como un submodule de su repository principal en gh-pages

Por lo tanto, cualquier modificación que realice en el submodule public cuando se encuentre en la twig master puede actualizarse (actualización git submodule update ) una vez que cambie a la twig gh-pages .

No digo que esta sea una solución para su configuration actual, ya que implica eliminar public de su contenido principal y volver a agregarlo en su propia twig (es decir, las otras soluciones pueden ser más sencillas), pero es una forma interesante de compartir un directory común:

 cd yourRepo git symbolic-ref HEAD refs/heads/public rm .git/index mv public .. git clean -fdx mv ../public/* . git add . git commit -m "public content in orphan branch public" git push origin public 

Pero una vez que haya creado una twig huérfana para include ese contenido ( public ), el truco para agregar ese contenido de twig como un submodule para otra twig es:

 $ git checkout master $ git submodule add -b public git@github.com:user/repo.git public $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: .gitmodules # new file: public # $ git commit -m "added public as submodule" $ git push 

Y puede repetir ese paso para su twig de gh-pages .

Eso creará un directory " public ", presente tanto al momento de pagar como en el master o gh-pages .
En ambos casos (ambos checkout), una git submodule update será suficiente para recuperar las últimas evoluciones realizadas en public submodule public .
Y, como siempre, cuando se trata de submodules, una vez que hagas las modificaciones en public directory public , asegúrate de que estás en su twig ' public ', confirma y pulsa, luego regresa a un directory anterior y agrega y confirma nuevamente.


Actualización de agosto de 2016: la publicación simple de GitHub Pages ahora permite mantener sus files de página en una subcarpeta de la misma twig (no se necesitan más gh-pages ):

Ahora puede seleccionar una fuente en la configuración de su repositorio y las páginas de GitHub buscarán allí su contenido.

Por lo tanto, el truco del submodule ya no es necesario para hacer que ambos types de contenido sean visibles a través de la misma twig.

 git checkout --orphan branch_name git rm -rf . git checkout master -- public 

¿Es público en el directory raíz de master?

 cp -r public/* ./ git add . git stash git checkout gh-pages git stash apply