1、先看一看版本控制是啥?是干嘛的?
版本控制
是指对软件开发过程中各种程序代码、说明文档等文件的变更进行管理。
1-1、人工版本控制器
通过人工的复制行为来保存项目的不同阶段的内容,添加适当的一些描述文字加以区分
1-2版本控制工具
通过程序完成上述人工版本控制行为
1-3常见版本控制工具
2、具体说一说git的使用
2-1 git文件的生命周期
2-2 四种状态
git 提供了四种不同的记录状态
2-3-1 三个区域
2-3-2 三个区域关系:工作区是我们能看到的区域,我们在工作区修改增加代码;完成编辑后,我们用git add 将工作区文件添加到暂存区;然后利用git commit 提交文件到我们自己的分支。
2-4 安装
点击一下去git官网下载你需要的版本即可
2-5-1 配置
当安装完 Git 后,去设置你的用户名与邮箱。
这样做很重要,因为每一个 Git 的提交都会使用这些信息,
并且它会写入到你的每一次提交中,不可更改
例如:
设置用户名与邮箱
git config user.name "wangwu"
git config user.email "[email protected]"
通过 --global
选项可以设置全局配置信息
git config --global user.name "wangwu"
git config --global user.email "[email protected]"
打印所有config
git config --list
打印指定config
git config user.name
3-1 创建仓库 - repository
进入你要 git 版本控制的项目目录中,使用命令 git init
进行初始化。
该命令将创建一个名为 .git
的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这个目录也是上面所说的工作区域
。
4-1 查看git状态
git status
如上图,如果文件没有添加到暂存区,没有提交到git仓库,会提示文件是Ustracked未追踪的状态
如果执行git status后有中文乱码,换一个命令如下(允许显示中文):
git config --global core.quotepath false
5-1 添加工作区文件到暂存区
添加单个文件 git add one.txt
添加多个文件 git add one.txt two.txt three.txt
添加整个目录 git add ./mulu1
添加多个目录 git add ./mulu1 ./mulu2
添加多个文件 git add .
6-1 提交到本地git仓库
将暂存区的文件(或修改后的文件)提交到本地仓库
工作区域区域会生成一个文件COMMIT_EDITMSG暂时存放版本信息
文件demo1.txt提交后,我们发现出现了中文乱码
前面提到我们要查看git状态时,可以执行git config --global core.quotepath false
解决乱码问题。
每次提交同时会生成一个 40 位的哈希值,作为该次提交版本的唯一 id
6-2 提交备注
每次提交时填写的备注信息
会调用默认(或自定义)的文本编辑器 git commit
单行备注信息 git commit -m 备注信息
6-3 修复提交
修复(替换上一次)提交,在不增加一个新的提交版本的情况下将新修改的代码追加到前一次的提交中,如下
git commit --amend -m 'this is the last remark'
7-1 删除
删除工作区中的指定文件git rm
删除从git仓库中的文件git rm --cached 文件
rm
后,还需要commit操作,不然rm将保留在暂存区
git commit -m 修改
如上图,将暂存区的文件删除了,但工作区中文件还在
7-2 撤销重置
git reset
从暂存区中撤销到工作区
从暂存区中撤销一个指定文件 git reset HEAD 文件名
从暂存区撤销所有文件 git reset HEAD .
如下图,添加一个html文件到暂存区
下图,执行撤销重置命令
如下图,撤销重置后,提示此文件是Unstracked(未追踪的)
7-3 回退版本
回退到之前的指定版本git reset --hard 之前提交产生的id
查看提交日志,
提交修改后的html文件,
我们看到产生的新id是0f30b97,上图可知,提交原html文件时产生的id是01f47ce
执行回退命令后,查看日志,我们看到提交的html文件id又回到之前的01f47ce,即回到之前的版本了。
注意:
工作区域
是git保存数据的地方,很重要,不要轻易修改或删除未追踪(Untracked)
的状态git rm
命令,它是直接删除工作区的文件,一般来说删除或修改的是git仓库中的 文件,而对仓库文件的删除或修改操作,不影响工作区的文件