如何使用git提取特定目录

时间:2010-03-11 13:06:32

标签: git directory pull

我有一个带git的项目,我只想克隆或拉出一个特定的目录,就像myproject / javascript一样,就像subversion一样。
进行一些更改,提交并再次推回。
有可能吗?

11 个答案:

答案 0 :(得分:180)

  1. cd到您的repo副本的顶部
  2. git fetch
  3. git checkout HEAD path/to/your/dir/or/file

    • (3)中的“path/...”位于包含“.../file”的回购根目录正下方的目录

    • 请注意,可以使用特定提交的哈希码代替“HEAD”,然后您将获得特定于该提交的修订版(文件)或修订版(dir)。

      < / LI>

答案 1 :(得分:73)

在空目录中:

TRUE

答案 2 :(得分:20)

在寻找答案后,没有找到,放弃,再次尝试等等,我终于在另一个SO线程中找到了解决方案:

How to git-pull all but one folder

复制粘贴那里的内容:

git init
git remote add -f origin <url>
git config core.sparsecheckout true
echo <dir1>/ >> .git/info/sparse-checkout
echo <dir2>/ >> .git/info/sparse-checkout
echo <dir3>/ >> .git/info/sparse-checkout
git pull origin master

要执行OP想要的操作(仅在一个目录上工作),只需在执行上述步骤时将一个目录添加到.git/info/sparse-checkout

非常感谢@cforbish!

答案 3 :(得分:13)

这是不可能的。你需要拉动所有存储库或什么也不需要。

答案 4 :(得分:8)

也许这个命令可能会有所帮助:

git archive --remote=MyRemoteGitRepo --format=tar BranchName_or_commit  path/to/your/dir/or/file > files.tar

“Etvoilà”

答案 5 :(得分:4)

我明白了。我会尝试创建子模块,看看是否适合我。我会报告结果。 编辑: 稀疏的结账和子模块为我解决了。我以前读过的链接(由VonC和Michel Jansen给出)是:

How to git-pull all but one folder

http://www.kernel.org/pub/software/scm/git/docs/git-read-tree.html#_sparse_checkout

http://vmiklos.hu/blog/sparse-checkout-example-in-git-1-7

http://www.kernel.org/pub/software/scm/git/docs/git-read-tree.html#_sparse_checkout

git submodule update

答案 6 :(得分:2)

尝试并测试了该作品!

df = pd.DataFrame({'text':['bla','bla'],
                  'word':['i','love'],
                  'num':[1,2,]})

希望这很有帮助!

答案 7 :(得分:1)

git clone --filter来自Git 2.19

此选项实际上将跳过从服务器获取不需要的对象。

我在How do I clone a subdirectory only of a Git repository?

处写了详细的答案来解释当前的支持状态。

很可能该地区为git clone实现的任何内容也将具有git pull类似物。

答案 8 :(得分:1)

如果您想在不输入目录的情况下获取目录的最新更改,可以执行以下操作:

$ git -C <Path to directory> pull

答案 9 :(得分:0)

有时候,你只是想看一下以前的文件副本,而不需要经历差异。

在这种情况下,复制存储库并检查您感兴趣的特定提交同样容易,并查看该克隆存储库中的子目录。因为一切都是本地的,所以你可以在完成后删除这个克隆。

答案 10 :(得分:-1)

对于像我一样在理论文件路径和示例方面遇到的所有麻烦,这里有一个真实的示例: Microsoft在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

Sdk.Soap.js/*

最后做一个

git pull origin master