2012-07-26 20 views
9

Tengo un sitio de jekyll que me gustaría haber alojado en GitHub. Como los complementos de jekyll no son compatibles con GitHub, quería que mi rama mater solo incluyera los archivos dentro del _site y creara una rama de desarrollo que tenga todo lo demás en ella.¿Es posible tener un repositorio de GitHub con dos ramas que contengan directorios diferentes en mi máquina local?

¿Sería esto posible? Si es así, ¿cómo podría hacerlo? No soy el mejor con git.

gracias

Respuesta

10

Parece que todo lo que quiere es tener una rama de desarrollo y una rama principal que contendrá un espejo del contenido de alguna carpeta, dicen _site.

¡Hagámoslo! Bien. Supongo que tiene un repositorio con una rama de desarrollo que contiene todo el personal y la carpeta _site que desea "exportar".

Permite crear una confirmación que contiene solo el contenido de la carpeta _site.

echo 'Fill with a meaningful description' | git commit-tree development^{tree}:_site crea una confirmación y muestra su id. Fue 47651a42.... Es será diferente en su máquina.

Tenga en cuenta que development^{tree}:_site es una revisión (sha1 suma) del árbol que corresponde a la carpeta _site en la raíz de la última confirmación en la rama development.

Y ahora que maestro punto de ramificación a esta confirmación: git update-ref refs/heads/master 47651a42

Ahora git log master mostrar lo siguiente en mi máquina

commit 47651a42e6800f399c4352d0416f4ca96895f099 
Author: Aleksandr Priymak <[email protected]> 
Date: Fri Jul 27 05:27:43 2012 +0400 

    first commit 

Si usted paga esta rama que presentamos lo mejor el contenido de la carpeta _site ! Así de simple. Solo queda una cosa. 47651a42 commit no tiene ningún padre, por lo que deberá agregar -f al comando git push para actualizar el maestro actualizado. A la inversa, realmente se especifica el padre. Para ello el uso de este comando

echo 'Fill with a meaningful description' | git commit-tree dev^{tree}:_site -p $(cat .git/refs/heads/master)

Para ello, puede utilizar el siguiente de una sola línea

git update-ref refs/heads/master $(echo 'Add commit message here!' | git commit-tree dev^{tree}:_site -p $(cat .git/refs/heads/master)) 
+0

hice algo similar a esto excepto que no quieren en realidad tienen _site en el maestro Repo Solo quiero los contenidos y cuando ejecuté 'git add _site/*' pensé que lo conseguiría, pero en realidad agregó _site así como su contenido. ¿Sería simplemente más simple tener dos repositorios git dentro de _site y uno dentro de myusername.github.com con un .gitignore _site? – edhedges

+1

Sí, será más simple, pero habrá perdido la información sobre la base de los datos que se generó _site a menos que use submódulos. –

+0

Lo siento pero no entiendo lo que dices. ¿Qué quieres decir? – edhedges

Cuestiones relacionadas