题 如何将Git存储库克隆到特定文件夹中?


执行命令 git clone git@github.com:whatever 在我当前的文件夹中创建一个名为whatever的目录,并将Git存储库的内容放入该文件夹:

/httpdocs/whatever/public

我的问题是我需要克隆到当前目录中的Git存储库的内容,以便它们出现在Web服务器的正确位置:

/httpdocs/public

我知道在克隆存储库之后如何移动文件,但这似乎打破了Git,我希望能够通过调用来更新 git pull。我怎样才能做到这一点?


1718
2018-03-16 15:56


起源


在Windows上,您可以从要克隆存储库的文件夹中移动文件[如果有的话],这样做时它就是空的 git clone。克隆后将文件移回[ctrl-z]和 whoala!如果当前文件夹为空,请使用: git clone giturl 。


答案:


选项A:

git clone git@github.com:whatever folder-name

选项B:

也移动.git文件夹。

更好的是:

将您的工作副本保存在其他位置,并创建符号链接。


2413
2018-03-16 16:08



我没有想到你的“更好”选项,我喜欢它,虽然我不知道为什么。这有什么好处? - David Smith
它现在可能没有提供任何优势,但如果您决定在某一天移动东西,它可能会为您省去很多麻烦。 - Can Berk Güder
此外,您可以使用“更好”选项快速切换版本。这特别有用,可用于服务器。 - Halil Özgür
@MEM我认为他的意思是创建一个.git的符号链接,即 ln -s path/to/.git path/to/working/directory - Alexander
谁能解释一下这个好处?我今天有点密集。如何使用符号链接使服务器受益? - triple


我认为很多人问这个问题的例子就是这个。如果你是  您想要将git存储库的内容转储到的目录,运行:

git clone git@github.com:whatever .

“。”最后将当前文件夹指定为checkout文件夹。


512
2018-02-25 17:15



如果该目录不为空,则不起作用。 - Charlie Flowers
是的,所以你不想在克隆到它之前在这个文件夹中运行“git init”。但如果你这样做,那么在克隆之前删除.git文件夹就可以了。 - Magne
修复我的答案中的空目录 - csomakk
无法在nitrous.io中工作?即使在清空后,它说目录不是空的 - Tejas Manohar
@TejasManohar确保您也删除了隐藏文件。 - Britic


进入文件夹..如果文件夹为空,则:

git clone git@github.com:whatever .

其他

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master

176
2017-12-12 08:43



实际上,当我只需要将已创建的项目推送到新创建的存储库时,这对我来说是最有用的答案。奖励! - wirher
只有答案指定如何结帐到非空文件夹,谢谢。 - Preston Badeer
这非常有用 switch -t 在文档上没有清楚地显示 git checkout。 - Chetabahana
-t开关有什么作用?我收到一条中止消息,其中包含一系列未跟踪的文件,这些文件将被结帐覆盖?在这种情况下该怎么办?我不希望这些文件被覆盖? - Momin Zahid
-t文档来自git:-t, - track创建新分支时,设置“上游”配置。有关详细信息,请参阅git-branch(1)中的“--track”。 - csomakk


基本的Git存储库克隆

您使用克隆存储库

git clone [url]

例如,如果你想克隆名为open_framework的斯坦福大学Drupal Open Framework Git库,你可以这样做:

$ git clone git://github.com/SU-SWS/open_framework.git

这将创建一个名为open_framework的目录(在您当前的本地文件系统位置),初始化其中的.git目录,下载该存储库的所有数据,并检出最新版本的工作副本。如果你进入新创建的open_framework目录,你会看到那里的项目文件,准备工作或使用。

将存储库克隆到特定的本地文件夹中

如果要将存储库克隆到名为open_framework之外的目录中,可以将其指定为下一个命令行选项:

$ git clone git:github.com/SU-SWS/open_framework.git mynewtheme

该命令与前一个命令的作用相同,但目标目录称为mynewtheme。

Git有许多不同的传输协议可供使用。前面的示例使用git://协议,但您也可以看到http(s)://或user @ server:/path.git,它使用SSH传输协议。


70
2018-04-23 21:27



这将自动在当前文件夹中创建一个文件夹并将文件放在那里。因此,您无需担心覆盖任何其他文件夹。 - arn-arn
在Windows Git Bash上于2018年在Git中运行良好。 - Eric Hepperle - CodeSlayer2010


当您将文件移动到您想要的位置时,您是否也在移动文件 .git 目录?根据您的操作系统和配置,可能会隐藏此目录。

它包含repo和支持文件,而你的项目文件 /public directory只是当前签出提交中的版本(默认为master分支)。


12
2018-03-16 16:14





克隆:

git clone git@jittre.unfuddle.com:jittre/name.git

克隆“特定分支”:

git clone -b [branch-name] git@jittre.unfuddle.com:jittre/name.git

11
2018-04-04 06:46





如果要克隆到当前文件夹,则应尝试以下操作:

git clone https://github.com/example/example.git ./

11
2017-09-11 00:59



致命的:目的地路径'。'已存在且不是空目录。 - Cleiton


如果您尝试将事物检出到当前目录,请确保删除.git存储库。

rm -rf .git 然后 git clone https://github.com/symfony/symfony-sandbox.git


9
2018-02-25 22:17





要将git存储库克隆到特定文件夹,您可以使用 -C <path> 参数,例如

git -C /httpdocs clone git@github.com:whatever

虽然它仍然会创造一个 whatever 在它上面的文件夹,所以要将存储库的内容克隆到当前目录,请使用以下语法:

git git@github.com:whatever .

请注意,克隆到现有目录中 只要 目录时允许

由于您要克隆到可供公共访问的文件夹,因此请考虑使用分离Git存储库和工作树 --separate-git-dir=<git dir> 或排除 .git Web服务器配置中的文件夹(例如,在 .htaccess 文件)。


9
2018-01-08 20:04