克隆GitHub仓库的内容(不包括文件夹本身)

292

我想要使用git clone命令克隆我在GitHub上的代码库内容。当我执行git clone(git@github:me/name.git...)后,我得到一个名为name/的文件夹,在该文件夹下还有我的代码... 我怎样只获取到代码内容而非整个文件夹呢?


1
可能是重复的问题:如何将Git存储库克隆到特定文件夹中? - bryanbraun
为了真正跳过下载不需要的对象以节省网络资源:https://dev59.com/QHRB5IYBdhLWcg3wgXhV#52269934 - Ciro Santilli OurBigBook.com
7个回答

398

如果当前目录为空,你可以这样做:

git clone git@github.com:me/name.git .

(注意在结尾处的 . ,它指定了当前目录。)当然,这也会在您当前的文件夹中创建 .git 目录,而不仅仅是您项目的源代码。

这个可选的[目录]参数在git clone手册页面中有说明,其中指出如果该目录不为空,则仅允许将克隆放入空目录中。


4
如果同一目录下存在其他无关的目录,则此方法不起作用。正在寻找解决方案。错误信息为:“fatal: destination path '.' already exists...” - John Little
18
Git克隆的目录必须为空。 - jolyonruss
1
@HumaunRashid 根据答案中的讨论,添加一个 .git clone https://github.com/humaun21/Test .。是的,git@github.me/name.git 是您实际的 git 存储库地址的占位符。 - Aaron Campbell
2
@JohnLittle 遇到了同样的问题,原来有一个隐藏的 .DS_Store 文件,它藏在那里。只需运行 rm .DS_Store 命令,问题就解决了。 - Selrond
1
如果您正在使用Linux操作系统,您需要确保目录为空,包括检查隐藏文件和子目录。您可以使用ls -a来完成这个任务。您应该只有.和..作为输出。否则这将无法正常工作。 - Ayo Makanjuola
显示剩余2条评论

181

很遗憾,如果在同一目录下已经存在其他无关的目录,则此方法无法工作。正在寻找解决方案。错误消息为:“致命错误:目标路径 '.' 已经存在...”。

在这种情况下的解决方案是:

git init
git remote add origin git@github.com:me/name.git
git pull origin master

即使您想要检出的目录中有其他目录,此配方也有效。


嗨,在这个程序中,我遇到了一个错误,类似于权限被拒绝<公钥>。远程端意外地挂断了连接。 - Stan
git remote ... 之后,应该是 github.com 而不仅仅是 github,对吗? - Armen Michaeli
6
这个答案本应该被接受的。它完美地解决了问题。 - vikramvi
我在这里看到别人说,在执行 git pull origin master 命令之前需要先运行 git fetch --all,因为如果仓库中有其他分支,git pull 命令不会获取那些分支,除非你先使用 fetch 命令。这是正确的吗? - Alex G
但是,其他无关的目录及其所有文件都将显示为未跟踪的更改。 - jewbix.cube
大家可能会在 GitHub 上的主开关后来到这里。如果是这样,请使用 git pull origin main 作为最后一步。 - Heiki

48

如果文件夹不为空,@JohnLittle的答案稍作修改对我有用:

git init
git remote add origin https://github.com/me/name.git
git pull origin master

正如 @peter-cordes 指出的那样,唯一的区别是使用 https 协议而不是 git,在这种情况下,您需要配置 SSH 密钥


你正在运行哪个版本的git?这对我没有起作用。它仍然不允许我设置它,因为目录不为空。 - guribe94
@guribe94 git 版本 2.5.0 - Tomáš Zemanovič
4
这是相同的答案,只是使用匿名的 HTTPS 协议而不是通过 SSH 的 Git 协议(需要拥有已设置好 SSH 密钥对的 Github 账户)。 - Peter Cordes

24

您可以将目标文件夹指定为git clone命令的第二个参数,因此您可以执行以下操作:

git clone <remote> .

这将直接在当前本地目录中克隆存储库。


只有当前目录不为空才能正常工作。 - Ion T

3

如果您不使用ssh,想要将git仓库克隆到当前的空文件夹中(无需git init),请执行以下操作:

git clone https://github.com/accountName/repoName.git .

1
这个对我有用的工人。
git clone <repository> .

1

我知道这个问题很旧,但请注意,如果有本地文件与远程文件匹配,git pull将会中止,解决方法是在拉取后进行重置,像这样:

git init
git remote add origin REMOTE_REPO_URL.git
git pull origin master
git reset --hard FETCH_HEAD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接