2011-09-25 9 views
8

私は複数のスクリプトでレポを持っています。それらのうちの1つは特に便利で、GitHubを使用して共有したいと思います。ローカルリポジトリからGitHubに1ファイルだけをプッシュ

他のすべてのスクリプトを同じリポジトリから共有せずに、GitHubリポジトリに1つのファイル(コミット履歴あり)をエクスポートするにはどうすればよいですか?

ような何か:

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

しかし、どのように私は、単一のファイル名を指定するのですか?あるいは、ある種の特別な「部分的な」コミットを作成する必要がありますか?仕事をする必要があります

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

答えて

3

あなたの歴史を書き換えて、その一つのファイル以外のすべてを取り除くためにfilter-branchを使用する必要があると思います。

--index-filterが動作しない場合(私はそこにgit addということについてはわかりません)、同じ引数で `--tree-filter 'を試してみてください。

+1

'git filter-branch --index-filter 'git rm --cached -fr。 ; git add ./useful-script.sh '--allall'を実行します。私はファイルが 'rm'によって削除されたと思います。そして、これはエラーを出します:" fatal:pathspec 'amarocker'はどんなファイルともマッチしませんでした。 – kolypto

+1

xargsで試してみる: 'git filter-branch --index-filter 'git ls-tree -r --name-only master | fgrep -v有用なスクリプト| xargs git rm --cached -fr '--allall。残念ながら、これは他のファイルに関連するコミットをそのまま残します:( – kolypto

+0

同じ結果です。ありがとう、少なくともこれはいくつかの希望を与える:) – kolypto

関連する問題