最近在网上有个真实发生的案例比较火,说的是一个新入职的员工,不会用 git 拉代码,第二天被开除。由此,可见 git 对我们工作的重要性,无论是前端后端,都是离不开 git 的,下面就让我们一探究竟吧。
上面的案例引申出一个问题,入职一家新公司,你的 leader 给你分配了仓库的权限后,如何配置本地的git环境并拉取代码?莫慌,按照下面我讲的四个步骤走,保证你可以顺利使用 git 进行拉取代码!
-
下载 git 下载地址 ,选择自己系统对应的版本下载即可。
-
在你的电脑上生成 ssh 秘钥,打开终端,执行
ssh-keygen -t rsa -C "你公司内部邮箱地址"
,如果执行成功,切换到~/.ssh
目录下,此时目录应该如下所示。复制id_rsa.pub
的内容。 -
这里以 github 为例,如下图所示,进入 settings -> SSH and GPG keys 通过
cat
命令查看文件id_rsa.pub
的内容,然后复制过来,点击 add ssh key,这一步等于说把你的公钥放到了 github 上进行托管。 -
全局配置 git 的用户名和邮箱
git config --global user.name "xxx"
git config --global user.email "xxx@xx.com"
完成以上四步,你就可以愉快的 pull 代码开发了,和 https 拉取方式不同的是,https 方式需要每次提交前都手动输入用户名和密码,ssh 的方式配置完毕后 git 都会使用你本地的私钥和远程仓库的公钥进行验证是否是一对秘钥,从而简化了操作流程。
git 简介
在介绍 git 的相关操作前,我觉得非常有必要了解 git 的由来,以及 git 是用来解决什么问题的。Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Linus Torvalds,这个人我相信大家都知道吧,开源 linux 系统的发明人。如今,你看到的大部分服务器其实都是运行在linux系统上,令人感到称叹的是,这位大神级别的程序员不仅创造了 linux 系统。那 linux 的代码是如何管理的呢?2002年之前,世界各地的志愿者把源代码文件通过 diff 的方式发给 Linus,然后由 Linus本人通过手工方式合并代码!要知道,当时的 linux 的代码量已经很大了,通过人工管理的方式,一是容易出错,二是效率低。于是 Linus 选择了一个商业的版本控制系统 BitKeeper,BitKeeper 的东家 BitMover 公司出于人道主义精神,授权 Linux 社区免费使用这个版本控制系统。最后,出于某种原因,BitMover 公司收回了 linux 社区的免费使用权,于是 Linus 花了两周时间自己用 C 写了一个分布式版本控制系统,这就是 git 的由来了。
git 的工作区域和流程
要想弄懂 git 是怎么对我们的代码进行管理的,那首当其冲的是了解 git 的工作区域是如何构成的。因为,只有彻底弄懂了 git 工作区域的构成,你才可以在适当的区域使用合适的命令。如下图所示,此图包含了 git 的4个工作区和一些常见的操作。
workspace:工作区,就是平时进行开发改动的地方,是当前看到最新的内容,在开发的过程也就是对工作区的操作
Index:暂存区,当执行git add
的命令后,工作区的文件就会被移入暂存区,暂存区标记了当前工作区中那些内容是被 git 管理的,当完成某个需求或者功能后需要提交代码,第一步就是通过 git add 先提交到暂存区。
Repository:本地仓库,位于自己的电脑上,通过git commit
提交暂存区的内容,会进入本地仓库。
Remote:远程仓库,用来托管代码的服务器,远程仓库的内容能够被分布在多个地点的处于协作关系的本地仓库修改,本地仓库修改完代码后通过 git push
命令同步代码到远程仓库。
一般来说,git 的工作流程分为以下几步
1. 在工作区开发,添加,修改文件。
2. 将修改后的文件放入暂存区。
3. 将暂存区域的文件提交到本地仓库。
4. 将本地仓库的修改推送到远程仓库。
git 基本操作
git add
添加文件到暂存区
# 添加某个文件到暂存区,后面可以跟多个文件,以空格区分
git add xxx
# 添加当前更改的所有文件到暂存区。
git add .
git commit
# 提交暂存的更改,会新开编辑器进行编辑
git commit
# 提交暂存的更改,并记录下备注
git commit -m "you message"
# 等同于 git add . && git commit -m
git commit -am
# 对最近一次的提交的信息进行修改,此操作会修改commit的hash值
git commit --amend
git pull
# 从远程仓库拉取代码并合并到本地,可简写为 git pull 等同于 git fetch && git merge
git pull <远程主机名> <远程分支名>:<本地分支名>
# 使用rebase的模式进行合并
git pull -