你如何克隆一个Git仓库到一个特定的文件夹?

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

 /httpdocs/whatever/public 

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

 /httpdocs/public 

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

选项A:

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

选项B:

移动.git文件夹。

更好的是:

保持你的工作副本在别的地方,并创build一个符号链接。

我想很多人问这个问题的例子是这样的。 如果你 git仓库的内容所在的目录下,运行:

 git clone git@github.com:whatever . 

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

进入文件夹..如果文件夹是空的,那么:

 git clone git@github.com:whatever . 

其他

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

你用一个仓库克隆

 git clone [url] 

例如,如果你想克隆斯坦福大学Drupal开放框架Git库叫做open_framework,你可以这样做:

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

这将创build一个名为open_framework的目录(在当前的本地文件系统位置),初始化其中的.git目录,抽取该存储库的所有数据,并检出最新版本的工作副本。 如果你进入新创build的open_framework目录,你会看到那里的项目文件,准备好处理或使用。 如果要将存储库克隆到名为open_framework之外的某个目录中,可以将其指定为下一个命令行选项:

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

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

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

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

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

克隆:

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

克隆“特定分支”:

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

确保你删除.git存储库,如果你想检查到当前目录的东西。

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

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

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

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

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

尽pipe它仍然会在它上面创build一个文件夹,所以要将版本库的内容克隆到当前目录中,请使用以下语法:

 git git@github.com:whatever . 

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

由于您正在克隆到可供公众访问的文件夹中,请考虑在您的Web服务器configuration中使用--separate-git-dir=<git dir>或排除.git文件夹(例如, .htaccess文件)。

用法

 git clone <repository> 

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

 git clone <repo> <directory> 

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

来源: build立一个存储库

以下是我将如何做,但我已经为我做了一个别名。

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

有可能是一个更优雅的方式做到这一点,但是我发现这对我自己来说是最简单的。

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

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

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

 $ 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' 

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

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

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

然后,为了让别名工作,他们(和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 source $ZSH/oh-my-zsh.sh; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh 。 这将加载插件的来源,这将允许您从现在开始使用allsource


我正在使用我的所有别名制作Git存储库。 请随时在这里查看: Ev的点文件 。 请随意分叉和改进,以满足您的需求。

克隆到当前工作目录

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

克隆到另一个目录

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

希望它有助于:)

假设你想在一个像/stuff这样的文件夹中,但是你正在/repo/tokens/下创build一个目录。

你可以做:

 mkdir /stuff ln -s /repo/tokens /stuff 

而已。 你完成了。

如果您使用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会将git存储库中的requests拉到/home/ubuntu/path。

关于原帖的这一行:

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

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

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

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

现在已经将文件复制到了文件夹中,现在已经可以与git进行交互了。