Git:git clone命令详解

Lasted 2020-01-02 12:16:41

git clone命令用于克隆现有的仓库。

如果想获取一份已经存在的Git仓库拷贝,需要用到git clone命令。与其他VCS系统(比如说 Subversion),Git 克隆的是该 Git 仓库服务器上的几乎所有数据,而不是仅仅复制完成你的工作所需要文件。当你执行 git clone 命令的时候,默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。

语法

git clone [url]

常用命令

1. 克隆 Git 的可链接库 libgit2。

git clone https://github.com/libgit2/libgit2
Cloning into 'libgit2'...
remote: Enumerating objects: 97755, done.
remote: Counting objects: 100% (97755/97755), done.
remote: Compressing objects: 100% (26444/26444), done.
remote: Total 97755 (delta 69581), reused 97727 (delta 69553), pack-reused 0
Receiving objects: 100% (97755/97755), 48.33 MiB | 857.00 KiB/s, done.
Resolving deltas: 100% (69581/69581), done.

完成后会在当前目录下创建一个名为 “libgit2” 的目录,并在这个目录下初始化一个 .git 文件夹,从远程仓库拉取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。如下所示:

ls -al
drwxr-xr-x.  8 root root   163 Jan  2 11:16 .git
drwxr-xr-x.  2 root root    28 Jan  2 11:16 .github
-rw-r--r--.  1 root root   372 Jan  2 11:16 .gitignore
drwxr-xr-x.  3 root root    32 Jan  2 11:16 include
-rw-r--r--.  1 root root 15275 Jan  2 11:16 README.md

2. 自定义本地仓库的名字。

git clone https://github.com/libgit2/libgit2 mylibgit
Cloning into 'mylibgit'...
remote: Enumerating objects: 97755, done.
remote: Counting objects: 100% (97755/97755), done.
remote: Compressing objects: 100% (26444/26444), done.
remote: Total 97755 (delta 69581), reused 97727 (delta 69553), pack-reused 0
Receiving objects: 100% (97755/97755), 48.33 MiB | 857.00 KiB/s, done.
Resolving deltas: 100% (69581/69581), done.

跟上一命令相似,不过在本地创建的仓库名字变为 mylibgit。

3. 指定用户名和密码。

HTTP协议的用户名/密码授权
git clone https://username:password@uri

Note:如果用户名或密码中包含“@”,需要先进行转义。

4. 设置替换URL。

git config --global --add url."git@github.com:".insteadOf "https://github.com/"
git config --list
user.name=username
user.email=mail@example.com
url.git@github.com:.insteadof=https://github.com/
取消设置替换
git config --global --unset url."git@github.com:".insteadOf

Git 支持多种数据传输协议。 包括 https:// 协议、git:// 协议或者使用 SSH 传输协议,比如 git@github.com:libgit2/libgit2.git。