我試圖在wordpress安裝上測試一些東西。這樣做,我想快速複製回購。然而,上傳目錄(wp-content/uploads
)很大,所以我想忽略它。git克隆,忽略目錄
注意:我不想一直爲這個目錄設置.gitignore這個目錄,只是爲了這個場景。
基本上,我想要一個像這樣的僞碼的命令:git clone --ignore wp-content/uploads
。
將該目錄添加到.gitignore,clone,然後恢復.gitignore的最佳方式是?還是有更好的方法?
我試圖在wordpress安裝上測試一些東西。這樣做,我想快速複製回購。然而,上傳目錄(wp-content/uploads
)很大,所以我想忽略它。git克隆,忽略目錄
注意:我不想一直爲這個目錄設置.gitignore這個目錄,只是爲了這個場景。
基本上,我想要一個像這樣的僞碼的命令:git clone --ignore wp-content/uploads
。
將該目錄添加到.gitignore,clone,然後恢復.gitignore的最佳方式是?還是有更好的方法?
git clone
將始終克隆完整存儲庫*,包括所有以前提交到存儲庫的提交。因此,即使您暫時刪除這些文件,然後克隆它,您仍然會收到包含這些文件的舊版本。
此外,僅編輯.gitignore
將不會從存儲庫中刪除跟蹤的文件,即使它們通常會被忽略。
所以不,在克隆過程中不可能跳過某個文件夾。
*可以限制克隆期間檢索的提交量,但這不會使存儲庫非常有用。
您可以指定要克隆的深度(--depth=1
只能獲得1次提交)。您可能想要設置一個缺少此目錄的分支,然後僅克隆一個深度的分支。由於git是基於快照的,克隆時排除部分提交併不容易。這是最接近你想要的。
如果您完全控制此回購,您可能需要製作此目錄的子模塊,並且只在您想要管理該部件時進行子模塊更新。
在服務器上:
git checkout master^0 # the ^0 checks out the commit itself, not the branch
git filter-branch --tree-filter 'git rm -r wp-content/uploads' HEAD
git checkout -b filtered
然後,您想要的位置(上一個大項目過濾分支在約2-3每秒提交這裏生成新的歷史),
git init
git remote add gimme your://repo/path
git fetch gimme filtered
編輯:根據http://git-scm.com/docs/git-filter-branch修復語法錯誤
晚會有點晚,但是:你不想要一個稀疏的結帳嗎?在列出所需的子樹
git config core.sparsecheckout true
配置稀疏結帳:
mkdir <repo> && cd <repo>
git init
git remote add –f <name> <url>
啓用稀疏結帳。混帳/信息/疏結賬:從遠程
echo some/dir/ >> .git/info/sparse-checkout
echo another/sub/tree >> .git/info/sparse-checkout
結帳:
git pull <remote> <branch>
更多信息,請參見http://jasonkarns.com/blog/subdirectory-checkouts-with-git-sparse-checkout/。
即使只將指定的目錄/文件簽出到本地沙箱中,仍會提取所有內容。 –
這個問題的答案說,你不能用一個選項來克隆至少:http://stackoverflow.com/questions/4257622/clone-of-git-repository-excluding-subdirectory – Michael
@邁克爾我很好,沒有使用'clone'。我會看看這個問題/答案。謝謝! – hookedonwinter