2011-09-25 26 views
8

Tengo un repositorio con varias secuencias de comandos. Uno de ellos es especialmente útil y quiero compartirlo usando GitHub.Enviar solo un archivo a GitHub desde un repositorio local

¿Cómo puedo exportar un archivo (con historial de confirmaciones) a un repositorio de GitHub sin compartir todas las demás secuencias de comandos del mismo repositorio?

Algo así como:

git remote add 'origin' [email protected]:user/Project.git 
git push -u 'origin' ./useful-script.sh 

Pero ¿Cómo se especifica un único nombre de archivo? ¿O debería crear algún tipo de compromiso 'parcial' especial?

Respuesta

3

Habría que utilizar filter-branch a reescribir su historia y despojar de todo pero que solo archivo:

git filter-branch --index-filter ' 
    git rm --cached -f -r .; 
    git add ./useful-script.sh; 
' --all 

debe hacer el trabajo.

Si --index-filter no funciona (no estoy seguro de que git add allí), intente `--tree-filter 'con el mismo argumento.

+1

'git filter-branch --index-filter 'git rm --cached -fr. ; git add ./useful-script.sh '- --all'. Supongo que el archivo se elimina por 'rm' y esto da un error:" fatal: pathspec 'amarocker' no coincide con ningún archivo ". – kolypto

+1

Probado con xargs: 'git filter-branch --index-filter 'git ls-tree -r - master de solo nombre | fgrep -v useful-script.sh | xargs git rm --cached -fr '- --all'. Desafortunadamente, esto deja los commits relacionados con otros archivos intactos :( – kolypto

+0

Mismo resultado. Gracias, al menos esto da un poco de esperanza :) – kolypto

Cuestiones relacionadas