如何让Git克隆到当前目录

我正在做:

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

我越来越:

致命的:目的地path'。' 已经存在,不是一个空目录。

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

我在这里错过了什么,以克隆该项目进入当前目录?

只需在它旁边放一个点

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

git help clone

克隆到一个现有的目录只允许目录是空的。

所以确保目录是空的(用ls -a检查),否则命令将失败。

以下可能不完全等同于所有情况下的克隆,但为我做了诡计:

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

在我的情况下,这会产生一个.git/config文件,这个文件与我在做一个克隆时获得的文件相同。

@安德鲁已经在这里明确回答了 。 但是,即使目录不为空,也可以这么简单:

 git init . git remote add origin <repository-url> git pull origin master 

为了确保你可以克隆回购,去任何临时目录,并在那里克隆项目:

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

这将克隆你的东西到一个project_hub目录。

克隆完成后,您可以将此目录移动到任何您想要的位置:

 mv project_hub /path/to/new/location 

这是安全的,不需要任何魔法东西。

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

除了@ StephaneDelcroix的回答,在使用之前:

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

确保你的当前目录是空的使用

 ls -a 

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

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

改进@ GoZoner的答案:

 git clone <repository> foo; shopt -s dotglob nullglob; mv foo/* .; rmdir foo 

shopt命令是从这个SO回答中获得的,并将Bash上的“mv”命令的行为改为包含dotfiles,您将需要包含.git目录和任何其他隐藏文件。

另外请注意,只有在当前目录(。)为空的情况下,才能保证按原样工作,但只要克隆的repo中的文件与当前目录中的文件名称均不相同,就可以工作。 如果不关心当前目录中的内容,可以将-f(强制)选项添加到“mv”命令中。

解决scheme:在这种情况下,解决scheme使用的是dot ,所以: rm -rf .* && git clone ssh://user@host.com/home/user/private/repos/project_hub.git .

rm -rf .* &&可以省略,如果我们确定目录是空的。

积分转到:@James McLaughlin下面的评论。

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

目录必须是空的

在下面的命令末尾使用。(点)

git克隆url

这是我发现的:

我看到这个:

 fatal: destination path 'CouchPotatoServer' already exists and is not an empty directory. 

在我的搜查中,我偶然发现:

https://couchpota.to/forum/viewtopic.php?t=3943

find克林顿的入口。哈尔…如果你尝试这个(就像我做的那样),你可能会得到access denied回应,这是我的第一个线索,所以最初的错误(对我来说),实际上逃避到错误的根本问题。

解决scheme在Windows中:确保你运行cmdgit elevated ,然后运行:

 git clone https://github.com/RuudBurger/CouchPotatoServer.git 

以上是我的问题,只是提升为我工作。

使用删除

rm -rf。*

可能会让你陷入麻烦或更多的错误。

如果你有/ path / to /文件夹,并想删除里面的所有内容,但不是该文件夹,只需运行:

rm -rf / path / to / folder / *

 shopt -s dotglob git clone ssh://user@host.com/home/user/private/repos/project_hub.git tmp && mv tmp/* . && rm -rf tmp 

我有同样的需要。 在我的情况下,我有一个标准的Web文件夹,这是由Web服务器安装创build的。 为了这个例子的目的,让我们说这是

/server/webroot

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

我所要做的只是:

 cd /server/webroot git init git pull [url to my repo.git] 

你需要小心的做目标文件夹中的git init,因为如果你不会发生以下两件事情之一:

  1. 在我的情况下,git pull会简单地失败,并显示关于没有git文件的消息:

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

  1. 如果在您的文件夹的父path中有某个.git文件,则将在包含.git文件的父项中创build拉回购。 这发生在我身上,我对此感到惊讶;-)

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

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

通过mkdir filename创build一个新文件很有用,然后运行git clone xxxxx的命令,它可以在我的电脑上运行

如果repo是私有的, 首先添加你的ssh密钥 use => git clone git@github.com:yourusername / yourrepo.git else use => git clone https://github.com/yourusername/yourrepo.git

我已经看过这个问题很多次了 – 我只想指出,从你的目录中的git pull将会诀窍。

除非我在这里错过了一些东西 – 这对我有效。