2011-09-25 143 views
8

我有一個具有多個腳本的回購站。其中一個特別有用,我想用GitHub分享它。從本地存儲庫僅將一個文件推送到GitHub

如何將一個文件(含提交歷史記錄)導出到GitHub倉庫而不共享來自同一個倉庫的所有其他腳本?

喜歡的東西:

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

但我怎麼指定一個文件名?或者我應該創建某種特殊的「部分」提交?

回答

3

你不得不使用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

相關問題