git clone,忽略一个目录

hoo*_*ter 28 git

我正试图在wordpress安装上测试一些东西.在这样做的时候,我想快速复制回购.但是,上传目录(wp-content/uploads)很大,所以我想忽略它.

注意:我不想一直.gitignore这个目录,只是为了这个场景.

基本上,我喜欢这个伪代码的命令:git clone --ignore wp-content/uploads.

是将目录添加到.gitignore,克隆然后还原.gitignore的最佳方法吗?还是有更好的方法?

Rog*_*hip 10

派对有点晚了,但是:你不想要一个稀疏的结账吗?

mkdir <repo> && cd <repo>
git init
git remote add –f <name> <url>
Run Code Online (Sandbox Code Playgroud)

启用稀疏检查:

git config core.sparsecheckout true
Run Code Online (Sandbox Code Playgroud)

通过在.git/info/sparse-checkout中列出所需的子树来配置稀疏结账:

echo some/dir/ >> .git/info/sparse-checkout
echo another/sub/tree >> .git/info/sparse-checkout
Run Code Online (Sandbox Code Playgroud)

从远程登出:

git pull <remote> <branch>
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅http://jasonkarns.com/blog/subdirectory-checkouts-with-git-sparse-checkout/.

  • 即使只将命名的目录/文件签出到本地沙箱中,这仍然会获取所有内容. (3认同)

pok*_*oke 6

git clone将始终克隆完整的存储库*,包括曾经添加到存储库的所有先前提交.因此,即使您暂时删除文件,然后克隆它,您仍将收到包含这些文件的旧版本.

此外,只是编辑.gitignore将不会从存储库中删除跟踪的文件,即使它们通常会被忽略.

所以不,在克隆过程中不可能跳过某个文件夹.

*可以限制克隆期间检索的提交量,但这不会使存储库非常有用.


Ada*_*ruk 5

您可以指定要克隆的深度(--depth=1仅获得1次提交).您可能希望设置缺少此目录的分支,然后仅使用深度为1进行克隆.由于git是基于快照的,因此在克隆时排除部分提交并不容易.这是你最接近你想要的.

如果您完全控制此repo,则可能需要创建此目录的子模块,并且只在要管理该部分时才执行子模块更新.