用于简单Web部署的Git稀疏结账

时间:2013-04-05 06:12:41

标签: git web-deployment

我有一个像这样的目录结构:

../dir1/dev/project1/...
           /project2/...
           /project3/...
       /production/

我将dev(及其所有子目录)检入git(和github)。一切都运作良好。

我想使用github通过签出(或拉动或其他)到我的生产目录中来仅部署project2。 (具体来说,我想通过标签检查。)所以这会产生../dir1/production/project2

我不是一个git专家,但已经在网上阅读了一堆,看起来“稀疏结账”就是我所追求的。我尝试了各种说明herehere的组合 和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

我做错了什么?

1 个答案:

答案 0 :(得分:9)

啊哈 - 解决了。问题是,通过执行init,它创建了一个空的存储库,所以我无法进行结帐。 (我不知道为什么拉不起作用。)

相反,请执行克隆,但使用-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>