目录
1、Git概述
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。于 2005年以GPL发布。采用了分布式版本库的做法,不需要服务器端软件,就可以运作版本控制,使得源 代码的发布和交流极其方便。
Git最初是由Linux开发者Linus用了仅仅两周时间纯C语言编写而成,在编写完成之后就立马上手接管Linux源代码,不过在此之前Linux是由BitMover公司开发的BitKeeper分布式版本控制系统所管理源代码,它是商业收费的分布式版本控制器,但BitMover公司看中Linux开源精神,免费授权给Linux社区使用,在2002年时,Linux开始使用BitKeeper分布式版本控制系统管理源代码,但好景不长,有一天Linux社区成员Andrew(samba(局域网共享文件c/s程序)的作者)试图破解BitKeeper共享给所有人使用,被BitMover公司发现并收回了免费使用的版权,随后Linus就用了两周时间开发出了git(两周时间包括测试),也就是目前为止最好用的分布式版本控制系统。
大名鼎鼎的github用的就是git系统来管理它们的网站,这里需要区分一下,github和git是两个东西,github是一个社区,git是一个服务系统,github只支持git分布式系统,所以故名成为github。
1.1 版本控制
· 何为版本控制
版本控制是一种在软件开发过程中用于管理对文件、目录或工程 等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版 本的软件工程技术。
版本控制最主要的功能就是追踪文件的变更,每一次文件的改 变,文件的版本号都将增加。除 了记录版本变更外,版本控制的另一个重要功能是并行开发。软件开发往往是多人协同作业,版本 控制可以有效地解决版本的同步以及不同开发者之间的开发通信问题,提高协同开发的效率。
代码版本 1
代码版本 2
代码版本 3
代码最终版
· 何为版本控制的作用
从个人开发转为团队协作
1.2 版本控制工具
1.2.1 集中式版本控制工具
集中化的版本控制系统比如SVN ,有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。
优点 :
每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管 理员也可以轻松掌控每个开发 者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。 缺点 缺点是中央服务器的单点故障。如果服务器宕机一小时,那么 在这一小时内,谁都无法提交更新,也就无法协同工作。
1.2.2 分布式版本控制工具
分布式版本控制工具(如Git)是一种允许开发者在本地存储和管理代码版本的系统,它不需要依赖中央服务器。这种工具可以在本地存储完整的版本历史,包括所有修改、合并等详细信息。开发者可以在本地进行提交和版本控制,并且可以随时与远程仓库进行同步。
相比于传统的集中式版本控制系统(如SVN),分布式版本控制系统具有更高的灵活性和安全性。 由于每个开发者都可以在本地存储完整的代码库副本,因此可以更好地支持远程协作和离线开发。
优点:
-
服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
-
每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)
1.3 git工作机制
· 图解 1
· 图解 2
1.4 代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程仓库。
· GitHub(外网, 不稳定,经常无法访问) GitHub: Let’s build from here · GitHub
· Gitee 码云(国内网站) Gitee - 基于 Git 的代码托管和研发协作平台
2 、安装
详细安装过程参考: Git 详细安装教程(详解 Git 安装过程的每一个步骤)_git安装-优快云博客
3、Git常用命令
命令 | 作用 |
---|---|
git config --global user.name | 设置用户签名-用户名 |
git config --global user.email | 设置用户签名-邮箱 |
git init | 初始化本地仓库 |
git status | 查看本地仓库状态 |
git add | 添加到暂存区 |
git commit -m "日志信息" 文件名 | 提交到本地仓库 |
git reflog | 查看历史记录 |
git reset --hard 版本号 | 版本穿梭 |
大概流程
3.1 设置用户签名
· 命令语法
git config --global user.name 用户名
git config --global user.email 邮箱[可以不存在]
· 命令说明
全局范围的签名设置.
签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次版 本提交者的身份。
Git 首次安装必须设置一下用户签名,否则无法提交代码。
注意:这里设置用户签名和将来登录 Gitee(或其他代码托管中心)的账号没有任 何关系。
3.2 初始化本地库
· 基本语法
git init
· 案例实操
-
第1步:在 计算机 - D盘 下创建目录:gitspace
-
第2步:在 gitspace 目录下,右键打开
Git Bash
终端 -
第3步:初始化本地仓库:
git init
3.3 查看本地库状态
· 基本语法
git status
· 命令演示
-
首次查看,工作区无任何文件
-
新建文件:
hello.txt
,并在其中输入任意内容 -
再次查看本地仓库状态:
git status
检测未被追踪到的文件, 文件的颜色为红色
3.4 添加暂存区
-
基本语法
git add 文件名
-
案例操作
-
添加到暂存区后, 查看状态,检测到暂存区有新文件 添加到暂存区后,文件的颜色变为绿色
3.5 提交到本地库
-
提交到本地库
git commit -m "日志信息" 文件名
-
案例操作
-
提交到本地仓库后,再次查看状态,没有文件需要提交
3.6 修改文件
-
第1步:修改
hello.txt
文件的内容; -
第2步:查看状态,检测到工作区有文件被修改
git status
;
-
第3步:将修改的文件再次添加到暂存区
git add hello.txt
; -
第4步:将修改的文件再次提交到本地仓库
git commit -m "Second commit" hello.txt
。
3.7 历史版本
3.7.1 查看历史版本
-
基本语法
git reflog // 查看版本信息
git log // 查看详细版本信息
-
案例操作 可以看到有两次提交记录 目前在最新的第二次提交的版本
3.7.2 版本穿梭
-
基本语法
git reset --hard 版本号
-
案例操作
- 第1步:HEAD指针指向第二次提交的
c297052
版本;
- 第2步:切换到第一次提交的
39aabc2
版本;
- 第3步:查看
hello.txt
文件内容,已修改;
- 第4步:
git reflog
查看日志,HEAD指针已指向第一次提交的版本。