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

Ros*_*s R 7 git web-deployment

我有这样的目录结构:

../dir1/dev/project1/...
           /project2/...
           /project3/...
       /production/
Run Code Online (Sandbox Code Playgroud)

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

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

我不是一个git专家,但已经在线阅读了一堆,看起来"稀疏结账"就是我所追求的.我在这里,这里这里尝试过各种指令组合.

基本上我做了:

mkdir <repo> && cd <repo>
git init
git remote add –f <name> <url>
git config core.sparsecheckout true
echo /project2/ >> .git/info/sparse-checkout
Run Code Online (Sandbox Code Playgroud)

我什么时候git pull <remote> TAGNAME得到fatal: The remote end hung up unexpectedly.

我什么时候git checkout TAGNAME得到error: Sparse checkout leaves no entry on working directory.

我究竟做错了什么?

Ros*_*s R 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>
Run Code Online (Sandbox Code Playgroud)