没有项目文件夹的git clone


85

我已授予对服务器的访问权限,并想将git repo克隆到我的根文件夹中。但是,当我执行git clone时,它将使我的文件夹具有项目名称,而我的项目文件夹是我的根目录。我无权访问父文件夹,我的根目录是

/var/www/sites/mysite/

当我克隆文件夹结构时

/var/www/sites/mysite/mysite

1
确保不要在所选的apache / webserver中提供.git。
mnagel

Answers:


193

git clone接受最后一个参数,即目标目录,默认情况下它是项目的名称,但是您可以更改它。就您而言,您可能只想.

$ git clone origin-url .

但请注意,来自man git-clone

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


4
git clone @rodrigo ./heaven
a_m_dev

克隆两个级别怎么样?我在pom.xml顶部有两个文件夹?
Bionix1441

1
@ Bionix1441:我不知道您的目录结构,但是如果仅通过编写将您降低两级git clone aaa/bbb。如果您想进行两个级别的升级,则可以尝试,git clone ..但由于您的父目录永远不会为空,因此无法正常工作。
rodrigo

结构如下folder1\folder2\pom.xml,我只需要pom.xml和文件夹处于与pom.xml
Bionix1441

34

您还可以只设置一个新的仓库,然后设置跟踪遥控器和分支:

git init .
git remote add origin git@github.com:user/repo.git
git fetch origin
git checkout master

如果存储库有一个父文件夹,这仍然行不通
Hittz,2015年

还必须将上游分支设置为匹配:git branch --set-upstream-to=origin/master master 然后不得不将本地更改推送到远程分支:git push --force 这用我的本地最新副本替换了旧的远程分支。
Daniel ZA

7

这在Windows上也很好用。

git init
git remote add origin git@github.com:user/repo.git
git pull origin master

5

请记住,git存储库只是存储它的目录结构。这意味着,当您将存储库克隆到错误的目录中时,您可以简单地将目录内容移动到其他任何您想要的位置,而存储库数据仍保持不变。因此,例如,您可以从命令行运行以下命令:

$ mv /var/www/sites/mysite/mysite/* /var/www/sites/mysite`
$ mv /var/www/sites/mysite/mysite/.* /var/www/sits/mysite`
$ rmdir /var/www/sites/mysite/mysite

4

您可以将项目克隆到子文件夹中,并且它们会将包括.git文件夹在内的所有文件移动到父文件夹(您的根目录)中。


3
为什么它不能更容易地完成,例如git clone git@github.com:whatever。\
dzona

可以,请参见rodrigos答案。但是我知道git repo只是一堆可以自由移动的文件,这个答案很容易记住。
mnagel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.