我有一个带git的项目,我只想克隆或拉出一个特定的目录,就像myproject / javascript一样,就像subversion一样。
进行一些更改,提交并再次推回。
有可能吗?
答案 0 :(得分:180)
git fetch
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
答案 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