【问题标题】:Push just one file to GitHub from a local repository仅将一个文件从本地存储库推送到 GitHub
【发布时间】:2011-11-24 15:32:48
【问题描述】:

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

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

类似:

git remote add 'origin' git@github.com:user/Project.git
git push -u 'origin' ./useful-script.sh

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

【问题讨论】:

    标签: git version-control github repository


    【解决方案1】:

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

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

    应该做的工作。

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

    【讨论】:

    • git filter-branch --index-filter 'git rm --cached -fr . ; git add ./useful-script.sh' -- --all 。我猜该文件已被rm 删除,这给出了一个错误:“致命:pathspec 'arocker' 不匹配任何文件”。
    • 尝试使用 xargs:git filter-branch --index-filter 'git ls-tree -r --name-only master | fgrep -v useful-script.sh | xargs git rm --cached -fr' -- --all。不幸的是,这使得与其他文件相关的提交保持不变:(
    • 同样的结果。谢谢,至少这给了一些希望:)
    猜你喜欢
    • 1970-01-01
    • 2016-05-10
    • 2012-08-25
    • 2015-08-04
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 2017-11-29
    • 2013-02-14
    相关资源
    最近更新 更多