命令 git clone git@github.com:whatever
创建一个名为 whatever
的目录,其中包含一个 Git 存储库:
./
whatever/
.git
我希望将 Git 存储库的内容克隆到我的当前目录 ./
中:
./
.git
选项 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(即 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。
我认为很多人问这个问题的例子就是这个。如果您位于要将 git 存储库的内容转储到的目录中,请运行:
git clone git@github.com:whatever .
这 ”。”最后将当前文件夹指定为结帐文件夹。
ls -a
将显示所有文件,包括隐藏文件。
进入文件夹..如果文件夹为空,则:
git clone git@github.com:whatever .
别的
git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master
switch -t
。
基本 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 传输协议。
要将 git 存储库克隆到特定文件夹,您可以使用 -C <path>
参数,例如
git -C /httpdocs clone git@github.com:whatever
尽管它仍会在其上创建一个 whatever
文件夹,但要将存储库的内容克隆到当前目录,请使用以下语法:
cd /httpdocs
git clone git@github.com:whatever .
请注意,仅当目录为空时才允许克隆到现有目录。
由于您正在克隆到可供公众访问的文件夹,因此请考虑使用 --separate-git-dir=<git dir>
将您的 Git 存储库与工作树分开,或者在您的 Web 服务器配置中排除 .git
文件夹(例如,在 .htaccess
文件中)。
您可以使用以下 git 命令使用自定义目录名称进行克隆
git clone <git_repo_url> <your_custom_directory_name>
注意:您不需要创建自定义目录,因为它会自动创建
克隆到当前工作目录:
git clone https://github.com/link.git
克隆到另一个目录:
git clone https://github.com/link.git ./Folder1/Folder2
希望能帮助到你 :)
./
如果你想克隆到当前文件夹,你应该试试这个:
git clone https://github.com/example/example.git ./
当您将文件移动到您想要的位置时,您是否也移动了 .git
目录?根据您的操作系统和配置,此目录可能会被隐藏。
它包含 repo 和支持文件,而 /public
目录中的项目文件只是当前签出提交中的版本(默认为 master 分支)。
用法
git clone <repository>
将位于
git clone <repo> <directory>
将位于
克隆:
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 repo-url [文件夹]
这里的文件夹是本地文件夹(将是本地存储库)的可选路径。
Git clone
还将 pull
代码从远程存储库写入本地存储库。事实上这是真的:
git clone repo-url = git init + git remote add origin repo-url + git pull
这是我的做法,但我已经为我做了一个别名。
$ 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's dot-files。请随意分叉和改进它们以满足您的需求。
如果您位于要将 git 存储库的内容转储到的目录中,请运行:
git clone git@github.com:origin .
这 ”。”最后将当前文件夹指定为结帐文件夹。
如果您将 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/
路径。
尽管上面的所有答案都很好,但我想提出一种新方法,而不是使用公共 html 目录中的符号链接方法,如已接受答案中建议的 BEST 。您需要有权访问您的服务器虚拟主机配置。
它是关于配置直接指向存储库目录的 Web 服务器的虚拟主机。在 Apache 中,你可以这样做:
DocumentRoot /var/www/html/website/your-git-repo
这是一个虚拟主机文件的示例:
<VirtualHost *:443>
ServerName example.com
DocumentRoot /path/to/your-git-repo
...
...
...
...
</VirtualHost>
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 .
关于原帖中的这一行:
“我知道如何在克隆 repo 后移动文件,但这似乎破坏了 git”
我能够做到这一点,到目前为止,我的添加、提交、推送、拉取操作没有发现任何问题。
这种方法如上所述,但没有分解成步骤。以下是对我有用的步骤:
将 repo 克隆到任何新的临时文件夹 cd 到您刚刚在本地克隆的根文件夹中,将文件夹的全部内容(包括 /.git 目录)复制到您喜欢的任何现有文件夹中; (比如说一个你想与你的仓库合并的 Eclipse 项目)
您刚刚将文件复制到的现有文件夹现在已准备好与 git 交互。
ln -s path/to/.git path/to/working/directory