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

时间:2009-03-16 15:56:55

标签: git repository git-clone

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

/httpdocs/whatever/public

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

/httpdocs/public

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

21 个答案:

答案 0 :(得分:2788)

选项A:

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

选项B:

也移动.git文件夹。

更好:

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

答案 1 :(得分:564)

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

git clone git@github.com:whatever .

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

答案 2 :(得分:200)

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

git clone git@github.com:whatever .

否则

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

答案 3 :(得分:80)

基本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传输协议。

答案 4 :(得分:13)

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

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

答案 5 :(得分:13)

克隆:

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

克隆“特定分支”:

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

答案 6 :(得分:12)

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

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

答案 7 :(得分:12)

要克隆到目前的工作目录

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

要克隆到另一个目录

git clone https://github.com/link.git ./Folder1/Folder2

希望它有助于:)

答案 8 :(得分:11)

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

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

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

git git@github.com:whatever .

请注意,当目录为空时,只允许 克隆到现有目录。

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

答案 9 :(得分:9)

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

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

答案 10 :(得分:8)

<强>用法

git clone <repository>

克隆位于&lt; repository&gt;的存储库到本地机器上。原始存储库可以位于本地文件系统上,也可以位于可通过HTTP或SSH访问的远程计算机上。

git clone <repo> <directory>

克隆位于&lt; repository&gt;的存储库进入名为&lt; directory&gt;的文件夹在本地机器上。

来源: Setting up a repository

答案 11 :(得分:3)

这是我将如何做到这一点,但我已经为我做了一个别名。

$ cd ~Downloads/git; git clone https:git.foo/poo.git

这可能是一种更优雅的方式,但我觉得这对我自己来说最容易。

这是我为加快速度而创建的别名。我为zsh做了它,但它应该适用于bash或任何其他shell,如fish,xyzsh,fizsh等。

使用您喜欢的编辑器编辑~/.zshrc/.bashrc等(我的是Leafpad,所以我会写$ leafpad ~/.zshrc)。

然而,我个人的偏好是制作一个zsh插件来跟踪我的所有别名。您可以通过运行以下命令为oh-my-zsh创建个人插件:

$ cd ~/.oh-my-zsh/
$ cd plugins/
$ mkdir your-aliases-folder-name; cd your-aliases-folder-name
     # In my case '~/.oh-my-zsh/plugins/ev-aliases/ev-aliases'
$ leafpad your-zsh-aliases.plugin.zsh
     # Again, in my case 'ev-aliases.plugin.zsh'

然后,将这些行添加到新创建的空白alises.plugin文件中:

# Git aliases
alias gc="cd ~/Downloads/git; git clone "

(从这里,用我的名字替换你的名字。)

然后,为了使别名起作用,它们(以及zsh)必须是源代码(或者它所谓的)。为此,请在自定义插件文档中添加以下内容:

## Ev's Aliases

#### Remember to re-source zsh after making any changes with these commands:

#### These commands should also work, assuming ev-aliases have already been sourced before:

allsource="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh; clear"
sourceall="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh"
#### 

####################################

# git aliases

alias gc="cd ~/Downloads/git; git clone "
# alias gc="git clone "
# alias gc="cd /your/git/folder/or/whatever; git clone "

####################################

保存您的oh-my-zsh插件,然后运行allsource。如果这似乎不起作用,只需运行source $ZSH/oh-my-zsh.sh; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh。这将加载插件源,从现在开始可以使用allsource

我正在制作一个包含所有别名的Git存储库。请随时在这里查看:Ev's dot-files。请随意分叉并改进它们以满足您的需求。

答案 12 :(得分:1)

如果您使用ssh git cloning,则可以使用以下命令。

git -C path clone git@github.com:path_to_repo.git

例如: git -C /home/ubuntu/ clone git@github.com:kennethreitz/requests.git会将requests的git存储库拉到您的/home/ubuntu/路径。

答案 13 :(得分:1)

由于某种原因,该语法不突出:

git clone repo-url [folder]

此处文件夹是本地文件夹(将是本地存储库)的可选路径。

Git clone还将pull从远程存储库编码到本地存储库。 实际上是真的:

git clone repo-url  =  git init + git remote add origin repo-url + git pull

答案 14 :(得分:1)

您可以使用以下git命令以自定义目录名称进行克隆

git clone <git_repo_url> <your_custom_directory_name>

注意:您不需要创建您的自定义目录,因为它将自动创建

答案 15 :(得分:0)

For Windows user 

1> Open command prompt.
2> Change the directory to destination folder (Where you want to store your project in local machine.)
3> Now go to project setting online(From where you want to clone)
4> Click on clone, and copy the clone command.
5> Now enter the same on cmd .

It will start cloning saving on the selected folder you given .

答案 16 :(得分:0)

尽管以上所有答案都不错,但我想提出一种新方法,而不是像在接受的答案中建议的BEST那样,在公共html目录中使用符号链接方法。您需要有权访问服务器虚拟主机配置。

这是关于配置Web服务器的虚拟主机,使其直接指向存储库目录。在Apache中,您可以这样做:

  

DocumentRoot / var / www / html / website / your-git-repo

以下是虚拟主机文件的示例:

<VirtualHost *:443>
    ServerName example.com

    DocumentRoot /path/to/your-git-repo
    ...
    ...
    ...
    ...
</VirtualHost>

答案 17 :(得分:0)

使用Visual Studio代码有一个非常简单的选项:

  1. 安装GitLab工作流程扩展
  2. 按Ctrl + Shift + P
  3. 输入存储库URL(您从GitLab,GitHub等复制的)
  4. 选择计算机上的本地存储库位置

答案 18 :(得分:0)

如果您位于目录中,则要将git存储库的内容转储到其中,请运行:

git clone git@github.com:origin .

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

答案 19 :(得分:-2)

我建议您点击以下链接:

https://help.github.com/en/articles/cloning-a-repository

如果在 git clone URL 命令

时出现以下错误
fatal: unable to access 'URL': Could not resolve host: github.com

然后使用以下命令对其进行修复:

git config --global --unset https.proxy

答案 20 :(得分:-3)

关于原帖中的这一行:

  

“我知道如何在我克隆回购后移动文件,但是这个   似乎打破了git“

我能够做到这一点,到目前为止,我的添加,提交,推送,拉动操作都没有任何问题。

这种方法如上所述,但不是分解为步骤。 以下是适用于我的步骤:

  1. 将repo克隆到任何新的临时文件夹
  2. 进入您刚刚在本地克隆的根文件夹
  3. 将文件夹的全部内容(包括/.git目录)复制到您喜欢的任何现有文件夹中; (比如说你想与你的回购合并的eclipse项目)
  4. 您刚刚将文件复制到的现有文件夹现已准备好与git进行交互。