0

情况

通过在远程存储库中拉取主分支的单个子目录,我设法在我的笔记本电脑中创建了一个本地 git 存储库。我已按照https://stackoverflow.com/a/13738951/5459638上这篇文章中给出的说明进行操作。我使用 git 版本 2.22.0。

相对于https://gitlab.com/<user>/<project>/tree/master项目网页中给出的子目录的路径包含在文件.git/info/sparse-checkout中,例如

subdir1/subdir11/

命令

git pull mylaptop master

确实创建了预期目录的本地副本。这通过tree -d. mylaptop是本地存储库的首选名称。这工作得很好。

问题

然后我想从同一个远程获取同级目录及其子目录,比如说

subdir1/subdir12/

我将此路径作为新行添加到 sparse-checkout 文件中并运行上面的 git pull 命令。然而,结果是

From https://gitlab.com/<user>/<project>
* branch            master     -> FETCH_HEAD
Already up to date.

我看不到本地树的变化。

研究

在 Stackoverflow 中遇到的几个建议中,我尝试了一下git update-index --skip-worktree,但无济于事。我这样做是出于直觉,但会避免盲目试验。这也不是路径中的斜杠的问题。

问题

显然我遗漏了一些让 Git 意识到列表已经扩展的东西。这可能是什么?

4

2 回答 2

2

添加新路径后.git/info/sparse-checkout

git checkout master

因此,您执行此操作而不是初始git pull命令。

于 2021-01-16T21:13:58.323 回答
0

您将需要合并和更新工作树中的文件。

只需运行:

git read-tree -mu HEAD

更多信息:git-read-tree

于 2019-11-29T10:17:21.450 回答