我有一个项目与git,我只是想克隆或拉一个特定的目录,像myproject/javascript就像subversion一样。 做一些改变,提交并再次提交。 这是可能的吗?


当前回答

Git克隆——filter + Git稀疏签出只下载所需的文件

我不确定拉/取,但至少对于最初的克隆,这个选项与远程协议的更新一起添加,它真正阻止了从服务器下载对象。

例如,只克隆这个存储库的大/子目录所需的对象:https://github.com/cirosantilli/test-git-partial-clone-big-small我可以做:

git clone --depth 1 --filter=blob:none --sparse \
  https://github.com/cirosantilli/test-git-partial-clone-big-small
cd test-git-partial-clone-big-small
git sparse-checkout set small

我已经详细介绍了这一点:如何克隆Git存储库的子目录?

很可能在这个领域中为git克隆实现的任何东西都有git pull类似物,但我还不能很容易地找到它。

2021年1月在git 2.30.0上测试。

其他回答

如果你想在不进入目录的情况下获得目录的最新更改,你可以这样做:

$ git -C <Path to directory> pull

CD到你的回购拷贝的顶部 git获取 git checkout HEAD路径/到/your/dir/或/文件 (3)中的“path/…”开始于包含“…/文件”的repo根目录下面的目录 注意,可以使用特定提交的哈希码而不是“HEAD”,然后您将获得特定于该提交的revision (file)或revisions (dir)。

对于我所做的理论文件路径和示例的所有斗争,这里有一个真实的例子: 微软在git hub上提供了他们的文档和示例,不幸的是,他们确实在这个存储库中收集了大量主题的所有示例文件:

https://github.com/microsoftarchive/msdn-code-gallery-community-s-z

我只对路径中的Microsoft Dynamics js文件感兴趣

msdn-code-gallery-community-s-z/Sdk.Soap.js/

所以我做了以下的事情

创建一个

msdn-code-gallery-community-s-zSdkSoapjs\.git\info\sparse-checkout

文件在我的存储库文件夹在磁盘上

git sparse-checkout init

在Windows下使用CMD在该目录中

的文件内容

msdn-code-gallery-community-s-zSdkSoapjs\.git\info\sparse-checkout

is

Sdk.Soap.js/*

最后做一个

git pull origin master

Git克隆——filter + Git稀疏签出只下载所需的文件

我不确定拉/取,但至少对于最初的克隆,这个选项与远程协议的更新一起添加,它真正阻止了从服务器下载对象。

例如,只克隆这个存储库的大/子目录所需的对象:https://github.com/cirosantilli/test-git-partial-clone-big-small我可以做:

git clone --depth 1 --filter=blob:none --sparse \
  https://github.com/cirosantilli/test-git-partial-clone-big-small
cd test-git-partial-clone-big-small
git sparse-checkout set small

我已经详细介绍了这一点:如何克隆Git存储库的子目录?

很可能在这个领域中为git克隆实现的任何东西都有git pull类似物,但我还不能很容易地找到它。

2021年1月在git 2.30.0上测试。

这是不可能的。你需要调出所有的存储库。