我有一个像这样的目录结构:
../dir1/dev/project1/...
/project2/...
/project3/...
/production/
我将dev(及其所有子目录)检入git(和github)。一切都运作良好。
我想使用github通过签出(或拉动或其他)到我的生产目录中来仅部署project2。 (具体来说,我想通过标签检查。)所以这会产生../dir1/production/project2
我不是一个git专家,但已经在网上阅读了一堆,看起来“稀疏结账”就是我所追求的。我尝试了各种说明here和here的组合 和here。
基本上我做了:
mkdir <repo> && cd <repo>
git init
git remote add –f <name> <url>
git config core.sparsecheckout true
echo /project2/ >> .git/info/sparse-checkout
当我git pull <remote> TAGNAME
时,我得到fatal: The remote end hung up unexpectedly
。
当我git checkout TAGNAME
时,我得到error: Sparse checkout leaves no entry on working directory
。
我做错了什么?
答案 0 :(得分:9)
相反,请执行克隆,但使用-n参数进行“no checkout”。这会克隆git存储库,但会将工作树留空。然后设置稀疏结账。然后检查你想要的东西。
致白:
cd <parentdir>
git clone -n <url>
cd <repo_dir>
git remote add –f <name> <url>
git config core.sparsecheckout true
echo /<foldername>/ >> .git/info/sparse-checkout
git checkout <tagname>