1.1 Git介绍
1.1.1为什么要使用Git
在软件开发过程,每天都会产生新的代码,代码合并的过程中可能会出现如下问题:
- 代码被覆盖或丢失
- 是谁修改了代码以及为什么修改
- 发版时希望分成不同的版本(测试版、发行版等)
- 代码写的不理想希望还原之前的版本
因此,我们希望有一种机制,能够帮助我们:
- 协同开发时不会覆盖别人的代码
- 留下修改记录,以便随时查看
- 发版时可以方便的管理不同的版本
- 可以随时回滚到之前的版本
1.1.2 Git是什么
Git是目前世界上最先进的分布式版本控制系统(没有之一)。由Linux之父李纳斯·托沃兹(Linus Benedic Torvalds)创建。
版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
- 集中式版本控制系统
这类系统,诸如 CVS、Subversion等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
- 分布式版本控制系统
在这类系统中,像Git,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。
1.1.3 Git优势
- 分布式
- 开源免费
有强大的代码仓库管理系统(Gitlab,Github)
1.2 Git环境搭建
Windows版的Git,从 Git for Windows 下载,然后安装即可。
- 下载后,直接双击安装包
- 直接点击“Next”
- 选择安装配置信息
- 一路“Next”,都用默认配置选项,直到安装完成。
- 安装完成后,鼠标右键,在菜单里找到“Git GUI Here”和“Git Bash Here”,就说明Git安装成功!
选择“Git Bash Here”:
1.2.1 Git配置
Git是分布式版本控制系统,所以每个机器都必须自报家门:名字和地址。
直接在Git命令窗口运行以下命令设置:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
配置完成 可以用 git config --list查看配置信息
1.3 Git基本工作原理
1.3.1 Git三个工作区域
- 工作区
本地电脑上能看到的项目目录,存有从Git仓库提取出来的文件。
- 暂存区域
暂存区域是一个文件,保存了下次将提交的文件列表信息,临时保存你的改动。
- Git仓库
Git用来保存项目的元数据和对象仓库的地方。工作区中隐藏目录.git。
1.3.2 Git文件三种状态
- 已修改(modified)
表示修改了文件,但还没保存到仓库中。
- 已暂存(staged)
表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
- 已提交(committed)
表示数据已经安全的保存在本地仓库中。
1.3.3 Git工作流程
- 在工作目录中修改文件。
- 暂存文件,将文件的快照放入暂存区域。
- 提交更新,找到暂存区域的文件,将快照存储到Git仓库。
1.4 Git初始化仓库
1.4.1 创建仓库
选择一个合适的地方,创建一个目录“gittest”,进入到“gittest”,右键选择“Git Bash Here”,打开终端,输入命令:
$ git init # 创建一个空的Git仓库或重新初始化一个现有仓库
初始化完成,会在当前目录下多了“.git”目录,这个子目录含有你初始化的Git仓库中所有的必须文件,这些文件是Git仓库的骨干。
但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪。
1.4.2 添加文件
$ git add 将修改添加到暂存区
$ git status 显示工作目录和暂存区的状态。
$ git commit 将更改记录(提交)到Git仓库
- 在当前’gittest’目录下,新建一个readme.txt文件,运行$ git status
***************************************************************
$ git status
- 运行$ git add把文件添加到暂存区
$ git add readme.txt
也可用git add .把所有修改的文件全部添加到暂存区
- 运行$ git commit 把文件提交到仓库
***************************************************************
$ git commit -m '注释信息'
[master (root-commit) 0d6c845] 添加README
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 140644 readme.txt
***************************************************************
-m,自动生成注释信息,如果不使用-m,会出现编辑器来让你写自己的注释信息。
1.4.4 注意事项
- 千万不要手动修改“.git”目录里面的文件,不然改乱了,就把Git仓库给破坏了
- 不用每次修改都commit,可以多次add,一次commit
- 每次修改,如果不add到暂存区,那就不会加入到commit中
1.5 Git远程仓库(Github)
1.5.1 需求
目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。你就需要将数据放到一台其他开发人员能够连接的服务器上。
通常的办法是让一台电脑充当服务器的角色,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。
可以自己搭建一台运行Git的服务器,也可以使用免费的托管平台。
1.5.2 Github
Git代码托管平台有不少,首先推荐的是GitHub,只支持Git作为唯一的版本库格式进行托管。GitHub有一个很强大的功能就是,你可以在服务器端创建一个库,上面的代码可以同步到本地;或者将本地的代码通过git bash命令同步到服务器端。
Github官网: https://github.com/,要先注册自己的账号。