引言

今天来谈一下git clone相关的东西.

首先,我们知道,当我们在本地新建仓库的时候,需要执行

git init

这行代码的一个重要的作用就是,创建.git文件夹,进而创建git配置文件config.

但是当我们执行

git clone

的时候,在克隆得到的文件夹里也会有个.git文件夹,以及config文件.

这个仓库因为是别人的仓库,因此这个config文件里将会记载着这个仓库的不同分支等信息.那么执行git clone后都会进行哪些操作呢?

git clone

1创建了一个新目录,切换到新的目录,然后 git init 来初始化一个空的 Git 仓库;

2然后为你指定的 URL 添加一个(默认名称为 origin 的)远程仓库(git remote add);

3再针对远程仓库执行 git fetch

4最后通过 git checkout 将远程仓库的最新提交检出到本地的工作目录。

具体操作

从上面的描述我们就可以看到,git clone完成了初始化仓库的作用,并且为我们与远端仓库建立了连接,并完成代码的拉取.

那么我们如果想实现clone别人的仓库到自己的本地,然后上传到自己的仓库的最简单的方式是怎么样的呢?

1在自己的云端账户上创建一个新的仓库;

2git clone别人的仓库到自己想要放置仓库的位置;

3打开这个仓库里.git中的config文件

我们会看到一个和下面代码类似的文件

[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
[remote "origin"]
	url =xxx
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
	remote = origin
	merge = refs/heads/main

这列xxx就是别人的仓库名.

这时我们打开我们刚建立的仓库,找到ssh地址的位置,然后复制到xxx的位置.注意这里只能用git@github.com...这种形式的,不能用http@github.com...

4然后就和正常的一样了,执行

git push -u origin main

然后就可以看到自己建的仓库已经有了内容.

同时,当我们切换分支的时候,config中也会紧跟着加上关于分支的信息.

May the force be with you!