7

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

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

我已将 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

当我这样做时,git pull <remote> TAGNAME我得到fatal: The remote end hung up unexpectedly.

当我这样做时,git checkout TAGNAME我得到error: Sparse checkout leaves no entry on working directory.

我究竟做错了什么?

4

1 回答 1

9

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

相反,请执行 clone ,但使用 -n 参数表示“不签出”。这将克隆 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>
于 2013-04-05T17:15:20.150 回答