2011-09-25 22 views
8

Mam repozytorium z wieloma skryptami. Jeden z nich jest szczególnie przydatny i chcę go udostępnić za pomocą GitHub.Prześlij tylko jeden plik do GitHub z lokalnego repozytorium

Jak mogę wyeksportować jeden plik (z historią commit) do repozytorium GitHub bez udostępniania wszystkich innych skryptów z tego samego repo?

Coś jak:

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

Ale jak mogę określić pojedynczy pliku? Czy powinienem stworzyć jakieś specjalne "częściowe" zatwierdzenie?

Odpowiedz

3

Trzeba by użyć filter-branch przepisać historię i rozebrać wszystko oprócz tego jednego pliku:

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

powinno załatwić sprawę.

Jeśli nie działa (nie mam pewności co do tego git add), spróbuj `--tree-filter 'z tym samym argumentem.

+1

'git filter-branch --index-filter 'git rm --cached -fr. ; git add ./useful-script.sh '- --all'. Domyślam się, że plik został usunięty przez 'rm' i to powoduje błąd:" fatal: pathspec "amarocker" nie pasuje do żadnego pliku ". – kolypto

+1

Próbowano za pomocą xargs: 'git filter-branch --index-filter 'git ls-tree -r --name-only master | fgrep -v użyteczne-script.sh | xargs git rm --cached -fr '- --all'. Niestety, pozostawia zobowiązania związane z innymi plikami nienaruszonymi :( – kolypto

+0

Ten sam wynik. Dzięki, przynajmniej to daje trochę nadziei :) – kolypto

Powiązane problemy