从零开始学习Git

Git最初是Linux的创始者Linus为了应对Linux日益增大的版本管理需求,花了两个周开发出来的。相对于SVN集中式的版本管理而言,Git的优点从使用角度来考虑,可以理解为SVN为两层的,而Git为3层的,除了远程可以进行版本管理之外,在本机也可以进行版本管理,切换管理分支也更快速方便。

安装Git

Git官网
安装完成之后,需要做一下全局配置,标示一下你的身份。

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

操作本地仓库

因为本人使用Windows作为生产环境,所以,所有的代码操作包括路径均为Windows平台。假设我们的代码目录为E:/super-render。

创建本地仓库

首先进入到本地目录的代码目录,并在其下打开命令行窗口,执行下面的命令

git init

这样就相当于在本地创建了一个git的版本仓库,仓库的信息都会存储在一个名为.git的隐藏文件夹当中

添加文件

git add 文件路径 --添加某个文件到暂存区
git add . 把工作区内修改和新增的文件添加到暂存区
git add -u 仅把修改的文件内容添加到暂存区
git add -A 把工作区内所有的变化都添加到暂存区,包括新增、修改以及删除
git commit 将暂存区的内容提交到本地仓库

分支操作

灵活快速的分支操作绝对是Git最迷人的地方之一。

git branch branch_name

操作远程库

因为github.com在国内速度不好,所以,我们就拿国内gitee.com平台来做为git的远程版本管理平台为例来进行说明。

创建远程仓库

创建密钥

密钥的生成命令,在win10的PowerShell中已经集成了,所以不需要则额外安装,如果是其他版本的话,可以自行安装openSSH。打开PowerShell,输入下面的命令, 其中-C后面跟的是你在git安装后配置的本机的标识,而-f后面跟的是你生成 的密钥文件的文件名,如果不跟-f这个参数,则会默认生成一个id_rsa为文件名称的两个文件,该文件会存放在C:/user/用户名/.ssh目录下面。

ssh-keygen -C "it.camel@gmail.com" -f "super-render"

密钥创建完成后需要将公钥信息(即生成的pub文件中的内容)上传到GitHub或者Gitee等远程仓库平台,作为将来与其通信时的凭据的。

拉取代码

git remote add super-render(远程库在你本机的一个别名)  从网站上获取到的远程库的代码URL路径,SSH协议的
git pull super-render  分支名,可选

在执行完上面的命令之后,你发现会有提示告诉你在你本机还没有这个网站的相关信息,是否继续完成创建,输入yes之后回车,现有又出现了一个新的错误!

The authenticity of host 'gitee.com (212.64.62.183)' can't be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitee.com,212.64.62.183' (ECDSA) to the list of known hosts.

先抛开错误,我们可以看到在.ssh目录下面,出现了一个新的文件known_hosts,在这个文件中添加了gitee网站的域名,以及IP,以及其它一些信息。OK,接下来,我们再来看刚才报出的错误,我把其贴到了下面:

git@gitee.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

从错误信息来看,我们的提交被拒绝了,因为公私钥的信息无法匹配起来。我们的公钥信息明明已经提交到gitee网站了啊,那我们在提交时,使用的私钥信息是哪个呢?这么一想,我们就知道了,在提交时,git也不知道应该使用什么私钥来提交这个请求。经过一翻资料查找,我发现,还有一个很重要的文件:位于.ssh目录下面的config。这个文件决定了在与远程的代码仓库交互时,使用哪个私钥来进行。下面我把其中的内容列出来,挨个解释一下。

Host gitee.com # 这个应该对应于上面的known_hosts文件中的host name,即每行的前面部分
	HostName gitee.com  # 没有特殊情况,与Host保持一致即可
	User git  # 由哪个程序来使用
	IdentityFile E:\note\ssh\super-render-rsa  # 私钥文件的位置
	IdentitiesOnly yes  # 没有作过多了解,默认写个yes吧

一翻折腾之后,再重新执行一下pull命令即可。如果本地仓库中已经有了内容,在拉取时,带上下面的参数。

git pull super-render --allow-unrelated-histories

提交代码

向远程库的master分支提交代码 ,注意push的代码只是在本地仓库已经commit到本地版本库的内容。

git push super-render master

合并分支

这部分的操作,需要在网站上来实现,后面补图。

Bug提交与解决

posted @ 2021-01-27 17:14  ITCamel  阅读(25)  评论(0)    收藏  举报