我正在做:
git clone ssh://user@host.com/home/user/private/repos/project_hub.git ./
Run Code Online (Sandbox Code Playgroud)
我越来越:
致命:目的地路径'.' 已存在且不是空目录.
我知道道路.已经存在.我可以保证目录是空的.(我在里面做,我什么都看不见!)
为了将该项目克隆到当前目录,我在这里缺少什么?
小智 470
只需在它旁边放一个点
git clone git@github.com:user/my-project.git .
Run Code Online (Sandbox Code Playgroud)
来自git help clone
:
仅当目录为空时才允许克隆到现有目录中.
因此请确保目录为空(请检查ls -a
),否则命令将失败.
And*_*ner 341
在所有情况下,以下内容可能并不完全等同于克隆,但对我来说是诀窍:
git init .
git remote add -t \* -f origin <repository-url>
git checkout master
Run Code Online (Sandbox Code Playgroud)
在我的例子中,这会生成一个.git/config
文件,该文件与我在进行克隆时获得的文件相同.
amb*_*bes 195
@Andrew显然已经回答了这里.但即使目录不为空,这也很简单:
git init .
git remote add origin <repository-url>
git pull origin master
Run Code Online (Sandbox Code Playgroud)
eck*_*kes 59
为了确保您可以克隆存储库,请转到任何临时目录并在那里克隆项目:
git clone ssh://user@host.com/home/user/private/repos/project_hub.git
Run Code Online (Sandbox Code Playgroud)
这将把你的东西克隆到一个project_hub
目录中.
克隆完成后,您可以在任意位置移动此目录:
mv project_hub /path/to/new/location
Run Code Online (Sandbox Code Playgroud)
这是安全的,不需要任何神奇的东西.
ret*_*.at 52
git clone your-repo tmp && mv tmp/.git . && rm -rf tmp && git reset --hard
Run Code Online (Sandbox Code Playgroud)
NSu*_*nny 34
做
git clone https://user@bitbucket.org/user/projectname.git .
Run Code Online (Sandbox Code Playgroud)
目录必须为空
GoZ*_*ner 13
如果当前目录为空,那么这将起作用:
git clone <repository> foo; mv foo/* foo/.git* .; rmdir foo
Run Code Online (Sandbox Code Playgroud)
Jak*_*hao 11
除了@ StephaneDelcroix的答案之外,在使用之前:
git clone git@github.com.user/my-project.git .
Run Code Online (Sandbox Code Playgroud)
通过使用确保您当前的目录是空的
ls -a
Run Code Online (Sandbox Code Playgroud)
解决方案:在这种情况下,解决方案是使用dot
,所以:rm -rf .* && git clone ssh://user@host.com/home/user/private/repos/project_hub.git .
rm -rf .* &&
如果我们绝对确定该目录为空,则可以省略.
积分转到:@James McLaughlin,评论如下.
进一步改进@phatblat 的回答:
git clone --no-checkout <repository> tmp \
&& mv tmp/.git . \
&& rmdir tmp \
&& git checkout master
Run Code Online (Sandbox Code Playgroud)
作为一个班轮:
git clone --no-checkout <repository> tmp && mv tmp/.git . && rmdir tmp && git checkout master
改进@ GoZoner的答案:
git clone <repository> foo; shopt -s dotglob nullglob; mv foo/* .; rmdir foo
Run Code Online (Sandbox Code Playgroud)
shopt命令取自此SO答案并更改Bash上'mv'命令的行为以包括dotfiles,您需要包含.git目录和任何其他隐藏文件.
另请注意,如果当前目录(.)为空,则只保证按原样运行,但只要克隆的repo中的所有文件都与当前目录中的文件同名,它就会起作用.如果您不关心当前目录中的内容,可以在"mv"命令中添加-f(强制)选项.
我用它来将一个 repo 克隆到当前目录,该目录不是空的。不一定是干净的生活,但它是在一个一次性的码头集装箱里:
git clone https://github.com/myself/myRepo.git temp
cp -r temp/* .
rm -rf temp
Run Code Online (Sandbox Code Playgroud)
在这里,我使用了cp -r
而不是mv
,因为它复制了隐藏的文件和目录。然后处理临时目录rm -rf
小智 5
我有同样的需要.在我的例子中,我有一个标准的Web文件夹,它是由Web服务器安装创建的.出于这个例子的目的,让我们说这是
/server/webroot
和webroot包含其他标准文件和文件夹.我的repo只有网站特定的文件(html,javascript,CFML等)
我所要做的就是:
cd /server/webroot
git init
git pull [url to my repo.git]
Run Code Online (Sandbox Code Playgroud)
你需要小心在目标文件夹中执行git init,因为如果你不这样做会发生以下两种情况之一:
致命的:不是git存储库(或任何父目录):.git
这不会干扰我在webroot文件夹中的任何"标准"文件,但我确实需要将它们添加到.gitignore文件中,以防止无意中将它们添加到后续提交中.
这似乎是一种"克隆"到非空目录的简单方法.如果你不想要拉动创建的.git和.gitignore文件,只需在拉动后删除它们.
嗯...指定绝对电流路径$(pwd)
对我有用。
git clone https://github.com/me/myproject.git $(pwd)
Run Code Online (Sandbox Code Playgroud)
git版本: 2.21.0
归档时间: |
|
查看次数: |
420628 次 |
最近记录: |