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

kol*_*pto 8 git version-control github repository

我有一个包含多个脚本的仓库.其中一个特别有用,我想用GitHub分享它.

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

就像是:

git remote add 'origin' git@github.com:user/Project.git
git push -u 'origin' ./useful-script.sh
Run Code Online (Sandbox Code Playgroud)

但是如何指定单个文件名?或者我应该创建某种特殊的"部分"提交?

kni*_*ttl 3

您必须filter-branch重写您的历史记录并删除除该单个文件之外的所有内容:

git filter-branch --index-filter '
  git rm --cached -f -r .;
  git add ./useful-script.sh;
' --all
Run Code Online (Sandbox Code Playgroud)

应该做这项工作。

如果--index-filter不起作用(我不确定那里git add),请尝试使用相同参数的“--tree-filter”。