如何让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中:确保你运行cmd
或git 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,因为如果你不会发生以下两件事情之一:
- 在我的情况下,git pull会简单地失败,并显示关于没有git文件的消息:
致命的:不是一个混帐存储库(或任何父目录):.git
- 如果在您的文件夹的父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
将会诀窍。
除非我在这里错过了一些东西 – 这对我有效。