Git 了解一下

阅读本文大概需要 11 分钟

为什么要学 Git?

完整的版本控制功能,解决多人协助问题。

提高开发效率

牛逼人都在用

要习惯把自己的代码同步到 github 上。不管多烂的代码。

Git 是什么?

Git 是目前世界上最先进的分布式版本控制系统。

原理

Workspace: 工作区

Index/Stage: 暂存区

Repository: 仓库区(本地仓库)

Remote: 远程仓库

SVN 与 Git 的最主要区别?

SVN 是集中式版本控制系统,版本库是集中放在中央服务器的,工作的时候,用的都是自己的电脑,所以首先要从中央服务器那里下载最新的版本,工作之后,需要把自己修改的地方或是工作的内容推送到中央服务器。集中式版本控制系统必须联网才能工作。如果在局域网还可以,带宽够大,下载速度够快。如果在互联网速度慢的情况下就悲催了。

Git 是分布式版本控制系统,它就没有中央服务器,每一个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网。因为版本就在自己的电脑上,那怎么协作工作呢?比如说我在我的电脑上改了文件 A ,其他人在他们的电脑上更改了文件 B ,这时,只需要把各自修改的地方推送给对方,就可以看见对方的修改了。

## 在 Windows 上安装 Git

直接在官网上安装就好,传送门

安装之后在桌面右键就会出现:

image

看着这个还要配置一下:

鼠标右击打开 Git Bash 或者在菜单里搜索 Git Bash,设置 user.name 和 user.email 配置信息:

因为 Git 是分布式版本控制系统,所以要填写用户名和密码作为唯一的标识。

注意:git config --global 参数,有了这个参数,表示这台机器上所有的 Git 仓库都会使用这个配置,当然你也可以对某个仓库指定不同的用户名和邮箱

如何操作

创建版本库

什么是版本库?

版本库又名仓库,英文名是 repository ,可以简单的理解为目录,这个目录里的所有文件都可以被 Git 管理起来,每个文件的修改、删除。Git 都可以追踪,以便任何时刻都可以追踪历史,或者还可以在将来某个时刻将文件还原。

所以创建一个版本也很简单。

我在 E 盘文件夹 git 下点击右键选中 Git Bash 。

输入命令

通过命令 把当前文件夹 git 变成了可以管理的仓库。

image

这时候 git 文件夹下会多了一个 .git 的文件夹。这个文件是 Git 来跟踪管理版本的,没事别动这里面的东西,谨记谨记!!!

把文件添加到版本库里

首先明确一点,所有的版本控制系统,只能跟踪文本文件的改动,比如 TXT 文件、代码、网页等这些。版本控制系统可以告诉你每次改动的情况。但是图片,视频这些二进制文件虽然也能用版本控制系统控制,但是没有办法跟踪文件的变化。图片用 PS 弄过是没有办法返回以前的版本的。

一个例子:

我在版本库 git 文件下新建一个文本文件 readme.txt 。

写入内容:「第一次使用分布式版本控制系统」

第一步:使用 命令,将文件添加到暂存区。

将文件添加到暂存区

如果和上面一样,没有任何提示,说明已经添加成功了。

第二步:用命令 告诉 Git ,把文件提交到仓库里。

image

现在我们已经提交了一个文件 readme.txt 到仓库里了。可以使用命令 git status 来查看状态,比如说是否还有文件没有提交等。

image

文件的修改

接下来修改一下 readme.txt 里面的内容,添加这么一行「我学会了git的修改啦」

然后用命令 来查看一下会发生什么。

image

他说文件改变了,但是没有提交到仓库中去。

接下来我想看看 readme.txt 文件修改了那些内容,可以使用命令 查看。

修改的内容

上边可以看到,文件readme.txt 的内容由一行变成了两行,虽然编码不正确,凑合这还能看。

在生产中应该都是代码的,这种中文很少出现。所以也不用太担心。

知道了对 readme.txt 的更改之后,就可以放心的提交到仓库了。

提交修改跟之前的提交文件是一样的「第一步是 git add ,第二步是 git commit 。」

提交修改

事实上,可以在任何一步结束后用命令 来查看当前状态。

总结一下:把文件放到 git 的仓库。

第一步: git init 初始化仓库。

第二步:git add 添加文件到暂存区。

第三步 git commit 提交文件到仓库。

git.png

工作场景

产品经理说我们来搞开发吧,底下一群嗷嗷待哺的小鲜肉:好啊好啊。布置了第一天的需求。

第一天的需求是什么呢。我们来模拟一下:

新建一个文件 demo.txt 写入「第一天产品经理的需求」

需求文件

开发好了需求之后,我们提交到仓库中去。

记得怎么做吗?

提交第一天的开发任务

好了,任务完成,忙里偷闲耍会手机(偷乐)。快到下班的时候。产品经理来说要加一个需求。好吧,马不停蹄赶在下班前完成,但是还没有自测,不能提交到仓库中去,好吧,暂且提交到暂存区。

在 demo.txt 中写入「添加一个需求」

第一天下班前的需求

好了,提交到暂存区去:

提交到暂存区

可以看到是从第二个 git status 开始下班前的修改操作的。可以看到我输入了一个 后面没有加文件名,它提示我可以使用 。

好了到这里第一天的开发已经完成了。高高兴兴回家了。

第二天,产品经理跑来说昨天下班前的修改是不需要的。我们要回滚到上次的文件。… 好吧,可以。

从暂存区回滚到工作区

命令:

从暂存区回滚到工作区

好了,暂存区没有了,但是工作区还有。可以使用命令 来处理工作区的修改。

把工作区的修改去掉

再打开看一下文件:

第一天下班前的修改就不存在了

好了,开始第二天的开发。

在文件 demo.txt 中开发第二天的需求:写入「第二天产品经理的需求」

第二天的开发任务

完成之后,提交到版本库去。

第二天的开发

完成之后正想休息一下呢,产品经理来说其实今天的开发需求不用做。可是我们已经提交到版本库中去了。那怎么做才能回滚到第一次里面呢?

可以通过之前说的命令 查看我们两次提交的版本号。通过命令 加版本号。这个命令是仓库、暂存区和工作区都回滚到第一次的提交。

回滚到版本一

好了,看一下工作区的内容:

工作区

好了,第二天的开发已经去掉了。

接着等产品经理的命令。

恩?产品经理说开发商把钱拿跑了,把仓库清空吧。心理 MMP 。

清空本地工作区的开发命令

清空本地工作区的开发

本地清空,但是暂存区和仓库还没有清空。

清空仓库

好了,一整套流程完成了。

总结一下工作流:

git 工作流

远程仓库

目前我们使用的 Git 都是在本地操作,如果想分享代码,或者跟其他人合作来完成项目。我们就需要把数据放到一个公共的地方。就用全球最大的同性交友网站吧。

创建 SSH Key

为啥要创建这个东西呢?因为本地跟 github 连接是通过 ssh 来加密传输的。可以使用命令 来创建。这里的邮箱是你注册 github 时的邮箱。

这里找到你的 github 的 ssh 设置的地方去,新建一个 SSH key 。不知道怎么找。好吧。传送门

创建ssh key

点击 new ssh key

这里的 key 要在用户目录的「.ssh」下打开 git bash 命令行输入 :。

接下来的操作有点复杂。我是看了教程,但是出现了教程里没有的东西。再次记录一下。

输入命令之后,会让你输入个文件名。这里这个文件名最好输入 id_rsa 。

然后会让你输入密码、确认密码。这才行。

密码默认是不显示的

根据提示,它说公钥是存放在目录 「id_rsa.pub」秘钥是存放在目录「id_rsa」。这里公钥可以随便看。秘钥要保存好。

好了,我们把公钥展示出来,复制到 github 上去。

获取公钥

添加 ssh key 之后,我们看一下是否成功连接 github 。可以使用命令 查看。

这里也有坑,如果你不继续尝试下去完了。输入 yes 。之后又让输入密码。就是刚才我们设置的密码。这里同样没有显示。输入之后看到成功了。开心。

这里可以再次查看一下连接:

image.png

添加远程仓库

在 github 中新建一个仓库。

创建一个仓库

github 说可以有两种方式来创建仓库。一种是新建一个仓库。按照提示的那样来提交到远程仓库。一种是直接把已有的仓库提交的远程仓库中去。相信英语好的你肯定能看懂。

这里就以第一种方式演示一下。

创建文件

这里在一个空的文件夹里使用命令 创建了一个名为 README.md 的文件,写入 「# Learn_git」。

echo 的意思就是输入,然后 「>>」的意思就是追加。

提交到本地仓库

提交到本地仓库去。

接下来就是提交到远程仓库。

提交到远程仓库

其实按照提示操作就可以啦。刷新 github 上刚才创建的仓库就可以看到啦。

github 仓库

接着想增加一些内容,然后在推到远程仓库。

打开文件 README.md 输入「second commit 」。

这次就只要执行命令

就可以啦,因为之前我们已经把本地的仓库和远程仓库关联起来啦。

看一下远程的仓库:

远程仓库

这样就可以了。以后你可以写自己的代码把代码放到 github 上面的仓库里。

克隆仓库

克隆仓库的意思是把远程仓库里的文件克隆到本地,在本地开发之后提交到远程仓库,以此来达到多人协助的目的。

其实就一个命令就可以了 后面加 github 上仓库的链接就好了。

在本地开发完成之后

git add

git commit

git push

这里因为本地仓库是从远程仓库克隆下来的,不用再连接了,直接 就可以。

总结

Git 是很有用的,建议大家学习。花不了太多时间就可以掌握这项技能,何乐而不为呢。

最后欢迎大家 star 我的 github 呀。传送门

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181202G16LH500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券