1. 代码版本控制
Git是一种分布式版本控制工具。这里边提到两个关键词:版本控制和分布式。
1.1 版本控制
版本控制指的是一种记录代码内容变化,以便将来查阅特定版本情况的系统。版本控制能够实现每一个阶段性代码的备份,支持多人同时开发维护,并能够在出现错误时及时回退到先前版本,是开发中非常重要的工具。
1.2 分布式
在了解分布式的概念之前,我们先讲一下与之对应的集中式。
集中式版本控制系统:采用了客户端-服务器的模式,代码所有版本信息都存放在单一的服务器上集中管理,而开发者通过自己的客户端连接单一服务器,获取最新的文件以及提交更新。
在分布式系统之前,集中式已经极大提升了多人开发中版本控制的效率,但还是有许多明显的缺点:由于代码的版本信息全部存放于单一服务器,如果服务器出现故障,会导致没有人能进行更新,而且中央服务器的数据没有做备份而且损坏,所有记录就会丢失了。
分布式管理系统:客户端并不只提取最新版本的文件快照, 而是把代码仓库完整地镜像下来,包括完整的历史(版本)记录。 这么一来,每个开发者都可以更新自己的本地仓库不受中央服务器的影响;另外,当服务器丢失备份时都可以用任何一个本地仓库的镜像恢复。
2. Git基础知识
在Git中,我们把存放代码的地方称为仓库 Repository,服务器端存放着远程仓库—— Remote Repository,每一个开发者的客户端存放着本地仓库——Local Repository。为了称呼方便,我们一般称远程仓库为 Remote,本地仓库为 Repository。
在本地还有开发者的工作区 Workspace 和暂存区 Index / Stage。工作区是你能看到的目录:
暂存区是存放在".git"文件夹下的index文件中,会记录 git add 添加文件的相关信息,可以用 git status 查看暂存区状态。
简单总结一下:
- Remote: 远程仓库
- Respository: 本地仓库
- Index/Stage: 暂存区
- Workspace: 工作区
3. Git实操
在实操前需要完成git的安装,windows版本的安装包可以在git官网下载。以下所有的操作都是基于windows系统。 实操内容如下:
- 克隆代码
- git初始配置
- 代码修改和提交
3.1 克隆远程代码
我们已经在github上创建了一个公开的代码仓:https://github.com/tinygyro/git_rampup.git
在文件夹的目录下点击鼠标右键,再选择 git bash 即可进入:
克隆Remote代码的命令:
$ git clone https://github.com/tinygyro/git_rampup.git
执行命令后的结果:
完成代码克隆后,我们进入到项目文件夹,发现和远程仓库一样的结构:
3.2 git user初始配置
在第一次commit之前,我们要来配置git用户的姓名和邮箱。在项目的根目录下运行:
$ git config user.name "Tiny Gyro"
$ git config user.email "tinygyro@github.com"
可以通过查看".git"文件夹下的config文件查看到我们的的命令已经生效:
另外,如果我们想在这台PC的所有git仓库中配置一样的账户信息,可以使用下边的命令:
$ git config --global user.name "Tiny Gyro"
$ git config --global user.email "tinygyro@github.com"
3.3 代码修改和提交
我们运行命令 git status 查看暂存区状态:所在分支和工作区的状态。
$ git status
创建一个新文件 happy_summer.txt
改动只发生在工作区
运行 git status ,显示新添加的happy_summer.txt 是新文件不受git的追踪
运行命令 git add 添加到暂存区
git add happy_summer.txt
再次运行 git status
我们的更改已经推进到了暂存区
代码修改提交到本地仓库:
$ git commit -m "first commit"
此时更改已经推进到本地仓库区
本地仓库推送到远程仓库
$ git push
注:由于我们使用的是git的https协议,所以需要登录github账户确认一下。除了https协议之外,还有ssh协议,但是配置相对复杂一点,需要花些时间写一写。
至此,我们便完成了本地到云端的全部修改:
远程仓库更新: