我有一个项目与git,我只是想克隆或拉一个特定的目录,像myproject/javascript就像subversion一样。 做一些改变,提交并再次提交。 这是可能的吗?
当前回答
在空目录中:
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
“就是这样”
大多数答案/技术都会下载整个存储库,即使你只会看到/使用其中的一个子集。我不喜欢这样,因为我做的一些事情有很多我不感兴趣的大文件。在寻找答案,没有找到,放弃,再次尝试等等之后,我终于在另一个so线程中找到了一个解决方案:
如何拉出除了一个文件夹以外的所有文件夹
复制粘贴这里的内容:
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 !
CD到你的回购拷贝的顶部 git获取 git checkout HEAD路径/到/your/dir/或/文件 (3)中的“path/…”开始于包含“…/文件”的repo根目录下面的目录 注意,可以使用特定提交的哈希码而不是“HEAD”,然后您将获得特定于该提交的revision (file)或revisions (dir)。
在空目录中:
git init
git remote add [REMOTE_NAME] [GIT_URL]
git fetch REMOTE_NAME
git checkout REMOTE_NAME/BRANCH -- path/to/directory
有时,您只是想查看一下以前的文件副本,而不需要进行繁琐的差异处理。
在这种情况下,克隆存储库并签出感兴趣的特定提交并查看克隆存储库中的子目录也很容易。因为一切都是本地的,你可以删除这个克隆当你完成。
推荐文章
- 如何在Visual Studio中删除未推送的外向提交?
- Git在两个不同的文件之间的差异
- 我如何使用vimdiff来解决git合并冲突?
- 如何将更改提交到另一个预先存在的分支
- 为什么使用'git rm'来删除文件而不是'rm'?
- 我如何安装imagemagick与自制?
- 致命:git-write-tree:错误构建树
- Git克隆远程存储库的特定版本
- 如何在Python中获取当前执行文件的路径?
- git隐藏的意图用例是什么?
- 从远程Git存储库检索特定的提交
- 如何配置git bash命令行补全?
- 我如何迫使git拉覆盖每一个拉上的一切?
- 撤销“git add <dir>”?
- 是否可以在不先签出整个存储库的情况下进行稀疏签出?