如何用git拉特定的目录

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

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

    • (3)中的“ path/... ”从包含“ .../file ”的repo根目录下面的目录开始,

在一个空目录中:

 git init git remote add [REMOTE_NAME] [GIT_URL] git fetch REMOTE_NAME git checkout REMOTE_NAME/BRANCH -- path/to/directory 

这是不可能的。 你需要拉所有的仓库或什么都没有。

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

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

“Etvoilà”

我懂了。 我会尝试创build子模块,看看是否适合我。 我会报告结果。 编辑:稀疏结帐和子模块为我工作。 我曾经阅读过的链接(由VonC和Michel Jansen提供)是:

如何git-pull除了一个文件夹

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子模块更新

在找了一个答案之后,没有find,放弃,再试一次等​​等,终于在另一个SO线程中find了解决方法:

如何git-pull除了一个文件夹

要复制粘贴的内容:

 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!

Shingara是对的。 这个行为的解释在这个邮件列表线程中给出 。 如果你真的想这样做,你可以使javascript dir成为一个子模块。

有时候,你只是想看看以前的文件副本,而不需要通过差异的粗鲁。

在这种情况下,对存储库进行克隆和检出您感兴趣的特定提交并查看该克隆存储库中的子目录就非常简单。 因为一切都是本地的,你可以在完成后删除这个克隆。