写点什么

从零开始学习 Git

用户头像
ITCamel
关注
发布于: 2021 年 01 月 27 日

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])? yesWarning: 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 rightsand 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 提交与解决


发布于: 2021 年 01 月 27 日阅读数: 15
用户头像

ITCamel

关注

努力生活,快乐编程 2020.08.06 加入

一个在3D软件行业的程序员和创业者

评论

发布
暂无评论
从零开始学习Git