Git
一、版本控制概要 工作区 暂存区 本地仓库 远程仓库
1.1、什么是版本控制
版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
实现跨区域多人协同开发
追踪和记载一个或者多个文件的历史记录
组织和保护你的源代码和文档
统计工作量
并行开发、提高开发效率
跟踪记录整个软件的开发过程
减轻开发人员的负担,节省时间,同时降低人为错误
简单说就是用于管理多人协同开发项目的技术。
没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。
1.2 版本工具
集中式版本控制(SVN)
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。
分布式版本控制(Git)
Git是分布式版本控制系统,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。然后团队协作再通过远程仓库进行协作。
当然,Git的优势不单是不必联网这么简单,后面我们还会看到Git极其强大的分支管理,把SVN等远远抛在了后面。
1.3 暂存区(Staging area)
暂存区是工作区用来提交更改(commit)前可以暂存工作区的变化。

Git 命令操作
1 初始化仓库
Git操作前需要初始化仓库,用于存储版本管理的项目代码,目前仓库有2种类型:
- 本地仓库:是在开发人员自己电脑上的仓库
- 远程仓库:是在远程服务器上的仓库(跟团队其他成员共用)
![image]()
git config --global user.name "Your Name"-----配置自己的名称
git config --global user.email "email@example.com"-----配置自己的邮箱账户
git init---------初始化本地仓库
命令执行后,会在当前目录下多了一个.git的目录,这个目录是Git本地仓库,用于跟踪与管理代码(文件),没事别手动修改这个目录里面的文件,容易改乱了,导致Git仓库给蹦了。

2 添加文件
步骤1:创建一个普通文本文件

git add readme.txt--------**步骤2:将文件添加到暂存区**
git commit -m "添加了readme.txt文件"-------**步骤3:将文件添加到版本库**
简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
git commit命令执行成功后会告诉你,1个文件被改动(我们新添加的readme.txt文件)
执行完文件才会变绿(我上面截错图了),绿了就说明工作区和本地库一致了

3 Git工作流程



4 查看文件状态
git status # 查看当前git版本库的状态(查看缓存区中的文件内容)
git add .------可以把多个文件一起加到暂存区中

5 查看提交日志
git log
git log 命令显示从最近到最远的提交日志,如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:
git log --pretty=oneline

黄色长长的字符串是本次提交的commit id, 是Git使用SHA-1算法产生唯一标识符,能保证全球唯一。
6 查看差异
如果有改动,想看一下改了什么
git diff # 查看不同版本之间的文件差异
7 版本回退
git reset --hard HEAD^
可以回退到上一个版本
git reset --hard <commit id>
8 删除操作
一般直接删除文件,在执行add.commit.操作
9 分支管理
分支管理的是Git灵魂,开发必不可少基本操作,必须掌握。
为啥存在分支?因为项目成品经过这几个流程: 开发, 测试,上线,bug修改,多版本发布等。同一个项目不同版本同时开发,同时测试,同时上线,怎么确保在这种复杂情况下让项目能独立,又能相关关联执行下去呢?Git给出解决方案是分支管理, 每一个阶段就是一个分支,即可以相互独立,又可以相互合并。
查看分支

系统默认给了master
创建分支

切换分支

创建并切换分支

每一个分支都是一个独立的文件夹,切换分支后,上一个分支的文件不会出现,我在master中写了一个文件,现在切换到dev分支上,里面是没有文件的,所以要在dev中去合并master
合并分支

删除分支



浙公网安备 33010602011771号