我正在做:
git clone ssh://user@host.com/home/user/private/repos/project_hub.git ./
我越来越:
致命:目标路径“。” 已经存在,并且不是一个空目录。
我知道路。已经存在。而且我可以确保目录为空。(我在里面做ls,什么也看不见!)
为了将项目克隆到当前目录中,我在这里缺少什么?
我正在做:
git clone ssh://user@host.com/home/user/private/repos/project_hub.git ./
我越来越:
致命:目标路径“。” 已经存在,并且不是一个空目录。
我知道路。已经存在。而且我可以确保目录为空。(我在里面做ls,什么也看不见!)
为了将项目克隆到当前目录中,我在这里缺少什么?
Answers:
只需在其旁边放置一个点
git clone git@github.com:user/my-project.git .
来自git help clone
:
仅当目录为空时才允许克隆到现有目录。
因此,请确保目录为空(使用选中ls -a
),否则命令将失败。
ls -la
mkdir
创建硬链接到.
与..
通过默认设置,以便为新的目录在基于Unix的系统在技术上的“空”,在所有?我的意思是,我想您可以unlink .
,unlink ..
但是如果您在克隆后忘记重新链接的话,那可能会在以后给您带来巨大的问题。–
以下内容可能并非在所有情况下都完全等同于克隆,但对我有用:
git init .
git remote add -t \* -f origin <repository-url>
git checkout master
就我而言,这将生成一个.git/config
文件,该文件与执行克隆时得到的文件等效。
*
(忽略所有内容)时,git checkout master
即使该文件夹中已经有其他文件了,我也可以执行。然后克隆存储库中所有提交的文件(临时的.gitignore被仓库中的.gitignore覆盖)。一切都很棒。它应该通过使用git clone -f
或其他方式自行发生。
-t \*
是不必要的,因为它是默认值。
git remote set-head origin -a
可能会派上用场。它将原始来源的默认分支(refs/remotes/origin/HEAD
)设置为在远程存储库中设置的位置。git clone
不像那样自动执行此操作git remote add -f
。
为确保您可以克隆存储库,请转到任何临时目录并在此处克隆项目:
git clone ssh://user@host.com/home/user/private/repos/project_hub.git
这会将您的内容克隆到project_hub
目录中。
克隆完成后,您可以将目录移至所需位置:
mv project_hub /path/to/new/location
这是安全的,不需要任何神奇的东西。
/path/to/new/location
目录中创建一个子目录,这当然不是问题的重点。
git clone your-repo tmp && mv tmp/.git . && rm -rf tmp && git reset --hard
如果当前目录为空,那么它将起作用:
git clone <repository> foo; mv foo/* foo/.git* .; rmdir foo
解决方案:在这种情况下,解决方案使用dot
,因此:rm -rf .* && git clone ssh://user@host.com/home/user/private/repos/project_hub.git .
rm -rf .* &&
如果我们绝对确定目录为空,则可以省略。
致谢:@James McLaughlin,评论如下。
ls -d .*
. ..
我:〜/ tmp / tmp / tmp $
rm -rf ./.*
如果您只是删除当前目录下的隐藏(点)文件和目录(就像我之前说过的@stackunderflow),则“安全”。但是rm -rf
对于没有经验的用户来说,这是一个危险的命令,因此请小心使用!只是我的2美分。
.git
在之后git init
(我知道)
-rf
删除普通文件。请考虑删除此答案或至少接受其他答案。
我有同样的需求。就我而言,我有一个由Web服务器安装创建的标准Web文件夹。出于说明目的,我们说这是
/server/webroot
和webroot包含其他标准文件和文件夹。我的仓库只有站点特定的文件(html,javascript,CFML等)
我要做的就是:
cd /server/webroot
git init
git pull [url to my repo.git]
您需要注意在目标文件夹中执行git init,因为如果不这样做,将会发生以下两种情况之一:
致命:不是git存储库(或任何父目录):.git
这不会干扰我的webroot文件夹中的任何“标准”文件,但是我确实需要将它们添加到.gitignore文件中,以防止无意中将它们添加到后续提交中。
这似乎是“克隆”到非空目录的一种简便方法。如果您不希望通过pull创建.git和.gitignore文件,只需在pull之后将其删除。
我看到了:
fatal: destination path 'CouchPotatoServer' already exists and is not an empty directory.
在搜索中,我偶然发现:
https://couchpota.to/forum/viewtopic.php?t=3943
查找Clinton.Hall的条目,如果您尝试执行此操作(如我所做的那样),您可能会得到access denied
响应,这是我的第一个线索,因此,最初的错误(对我而言)实际上被误认为是错误的根源。问题。
在Windows中解决此问题的方法:确保运行cmd
或git elevated
,然后运行:
git clone https://github.com/RuudBurger/CouchPotatoServer.git
以上是我的问题,只是提升对我有用。
解决方案Windows
是将存储库克隆到其他文件夹,然后复制并粘贴到原始位置,或者仅复制.git
不可见的文件夹。
git clone ssh://user@host.com/home/user/private/repos/project_hub.git $(pwd)
如果repo是私有的,则 首先添加您的ssh密钥, 使用=> git clone git@github.com:yourusername / yourrepo.git否则使用=> git clone https://github.com/yourusername/yourrepo.git
只需删除(或移动).git
给定目录的内容,包括目录。
诸如Android Studio之类的自动化工具Rebuild
将为您解决问题。
更多详细信息:
为我显示的错误是由于显示的jarresolver
git repo
路径是temp\jarresolver\
我只是删除了temp\jarresolver\
目录的内容,包括隐藏的.git
目录。
就这样,一切正常,无需克隆。
当我这样做时Rebuild
,Android Studio克隆自身并构建成功。
ls -a
做,会看到.git
目录吗?