2011-09-25 23 views
8

Ho un repository con più script. Uno di questi è particolarmente utile e voglio condividerlo usando GitHub.Invia un solo file a GitHub da un repository locale

Come posso esportare un file (con cronologia del commit) in un repository GitHub senza condividere tutti gli altri script dallo stesso repository?

Qualcosa di simile:

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

Ma come faccio a specificare un singolo nome di file? O dovrei creare qualche tipo di commit "parziale" speciale?

risposta

3

Dovreste usare filter-branch di riscrivere la vostra storia e la striscia tutto, ma che solo file:

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

dovrebbe fare il lavoro.

Se --index-filter non funziona (non sono sicuro di quello git add), prova `--tree-filter 'con lo stesso argomento.

+1

'git filter-branch --index-filter 'git rm --cached -fr. ; git aggiungi ./useful-script.sh '- --all'. Immagino che il file sia stato rimosso da 'rm' e questo dà un errore:" fatale: pathspec 'amarocker' non corrisponde a nessun file ". – kolypto

+1

Provato con xargs: 'git filter-branch --index-filter 'git ls-tree -r --name-only master | fgrep -v useful-script.sh | xargs git rm --cached -fr '- --all'. Purtroppo, questo lascia i commit relativi ad altri file intatti :( – kolypto

+0

Stesso risultato, grazie, almeno questo dà qualche speranza :) – kolypto

Problemi correlati