我在做:

git clone ssh://user@host.com/home/user/private/repos/project_hub.git ./

我得到:

致命:目标路径'。’已经存在,不是空的 目录中。

我知道路。已经存在。 我可以保证这个目录是空的。(我在里面,我什么都看不到!)

为了将该项目克隆到当前目录,我在这里遗漏了什么?


当前回答

只要在旁边加个点就可以了

git clone git@github.com:user/my-project.git .

从git帮助克隆:

仅当现有目录为空时才允许克隆到该目录。

因此,确保目录为空(使用ls -a检查),否则命令将失败。

其他回答

我也有同样的需求。在我的案例中,我有一个标准的web文件夹,由web服务器安装创建。为了说明问题,我们设这是

/服务器/网络根目录

webroot还包含其他标准文件和文件夹。我的回购只是有网站特定的文件(html, javascript, CFML等)

我所要做的就是

cd /server/webroot

git init

git pull [url to my repo.git]

你需要小心在目标文件夹中初始化git,因为如果你不这样做,会发生以下两种情况之一:

在我的例子中,git拉将简单地失败,并提示没有git文件:

致命:不是一个git存储库(或任何父目录):.git

如果在你文件夹的父路径中有一个。git文件,你的拉回购将在那个包含。git文件的父路径中创建。这件事发生在我身上,我很惊讶;-)

这并没有打扰我在我的webroot文件夹中的任何“标准”文件,但我确实需要将它们添加到.gitignore文件中,以防止他们无意中添加到后续的提交。

这似乎是一种“克隆”到非空目录的简单方法。如果你不想要由pull创建的.git和.gitignore文件,只需在pull之后删除它们。

Do

git clone https://user@bitbucket.org/user/projectname.git .

目录必须为空

git clone your-repo tmp && mv tmp/.git . && rm -rf tmp && git reset --hard

以下内容可能并不完全等同于克隆游戏,但对我来说却很管用:

git init .
git remote add -t \* -f origin <repository-url>
git checkout master

在我的例子中,这将生成一个.git/config文件,该文件与我在进行克隆时得到的文件相同。

如果当前目录是空的,那么这将工作:

git clone <repository> foo; mv foo/* foo/.git* .; rmdir foo