2709

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

/httpdocs/whatever/public

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

/httpdocs/public

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

4

19 回答 19

3822

选项 A:

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

因此,right here使用:

git clone git@github.com:whatever .

选项 B:

也移动.git文件夹。请注意,该.git文件夹在大多数图形文件资源管理器中是隐藏的,因此请务必显示隐藏文件。

mv /where/it/is/right/now/* /where/I/want/it/
mv /where/it/is/right/now/.* /where/I/want/it/

第一行抓取所有普通文件,第二行抓取点文件。也可以通过启用 dotglob (ie shopt -s dotglob) 在一行中做到这一点,但如果您问这个答案回答的问题,这可能是一个糟糕的解决方案。

更好的是:

将您的工作副本保存在其他地方,并创建一个符号链接。像这样:

ln -s /where/it/is/right/now /the/path/I/want/to/use

对于您的情况,这将类似于:

ln -sfn /opt/projectA/prod/public /httpdocs/public

如果您愿意,可以轻松更改以进行测试,即:

ln -sfn /opt/projectA/test/public /httpdocs/public

无需移动文件。添加-fn以防有人复制这些行(-f强制, -n避免与已经存在和不存在的链接进行一些经常不需要的交互)。

如果您只是想让它起作用,请使用选项 A,如果其他人要查看您所做的事情,请使用选项 C。

于 2009-03-16T16:08:24.707 回答
625

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

git clone git@github.com:whatever .

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

于 2010-02-25T17:15:14.663 回答
248

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

git clone git@github.com:whatever .

别的

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master
于 2013-12-12T08:43:17.073 回答
106

基本 Git 存储库克隆

您克隆一个存储库

git clone [url]

例如,如果你想克隆名为 open_framework 的斯坦福大学 Drupal 开放框架 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 传输协议。

于 2013-04-23T21:27:56.920 回答
52

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

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

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

cd /httpdocs
git clone git@github.com:whatever .

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

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

于 2017-01-08T20:04:06.660 回答
30

克隆到当前工作目录

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

克隆到另一个目录

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

希望能帮助到你 :)

于 2017-03-21T16:03:51.180 回答
25

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

git clone <git_repo_url> <your_custom_directory_name>

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

于 2020-05-13T06:24:11.093 回答
18

如果你想克隆到当前文件夹,你应该试试这个:

git clone https://github.com/example/example.git ./
于 2016-09-11T00:59:08.380 回答
17

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

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

于 2009-03-16T16:14:48.887 回答
16

用法

git clone <repository>

将位于 <repository> 的存储库克隆到本地计算机上。原始存储库可以位于本地文件系统或可通过 HTTP 或 SSH 访问的远程计算机上。

git clone <repo> <directory>

将位于 <repository> 的存储库克隆到本地计算机上名为 <directory> 的文件夹中。

来源:设置存储库

于 2015-06-26T11:42:09.477 回答
15

克隆:

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

克隆“特定分支”:

git clone -b [branch-name] git@jittre.unfuddle.com:jittre/name.git
于 2013-04-04T06:46:46.003 回答
12

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

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

于 2011-02-25T22:17:12.180 回答
7

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

git clone repo-url [folder]

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

Gitclone还将pull从远程存储库编码到本地存储库。事实上这是真的:

git clone repo-url  =  git init + git remote add origin repo-url + git pull
于 2019-01-30T16:04:01.857 回答
5

这是我的做法,但我已经为我做了一个别名。

$ 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)必须是 source-in 的(或任何它被称为的)。为此,在您的自定义插件文档中添加以下内容:

## 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 的点文件。请随意分叉和改进它们以满足您的需求。

于 2016-02-28T04:46:25.980 回答
4

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

git clone git@github.com:origin .

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

于 2020-11-19T18:06:31.103 回答
3

如果您正在使用sshforgit cloning您可以使用以下命令。

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

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

于 2017-03-27T07:36:06.677 回答
0

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

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

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

这是一个虚拟主机文件的示例:

<VirtualHost *:443>
    ServerName example.com

    DocumentRoot /path/to/your-git-repo
    ...
    ...
    ...
    ...
</VirtualHost>
于 2019-08-30T06:29:15.750 回答
-1
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 .
于 2018-10-24T13:25:22.790 回答
-5

关于原帖中的这一行:

“我知道如何在克隆 repo 后移动文件,但这似乎破坏了 git”

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

这种方法如上所述,但没有分解成步骤。以下是对我有用的步骤:

  1. 将 repo 克隆到任何新的临时文件夹中
  2. cd 进入您刚刚在本地克隆的根文件夹
  3. 将文件夹的全部内容(包括 /.git 目录)复制到您喜欢的任何现有文件夹中;(比如说一个你想与你的仓库合并的 Eclipse 项目)

您刚刚将文件复制到的现有文件夹现在已准备好与 git 交互。

于 2013-05-06T02:16:22.157 回答