从本地存储库仅将一个文件推送到GitHub

问题描述:

我有一个具有多个脚本的回购站。其中一个特别有用,我想用GitHub分享它。从本地存储库仅将一个文件推送到GitHub

如何将一个文件(含提交历史记录)导出到GitHub仓库而不共享来自同一个仓库的所有其他脚本?

喜欢的东西:

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

但我怎么指定一个文件名?或者我应该创建某种特殊的“部分”提交?

你不得不使用filter-branch来修改你的历史和剥夺一切但单个文件:

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

应该做的工作。

如果--index-filter不工作(我不知道这一点git add那里),试图`--tree过滤器”使用相同的参数。

+1

'git filter-branch --index-filter'git rm --cached -fr。 ; git add ./useful-script.sh' - --all'。我猜这个文件被'rm'删除了,这给出了一个错误:“fatal:pathspec'amarocker'没有匹配任何文件”。 – kolypto

+1

用xargs试过:'git filter-branch --index-filter'git ls-tree -r --name-only master | fgrep -v useful-script.sh | xargs git rm --cached -fr' - --all'。不幸的是,这留下了与其他文件相关的提交完好:( – kolypto

+0

同样的结果。谢谢,至少这给了一些希望:) – kolypto