# git版本管理
## git工具的作用
了解git工具,首先要了解它的作用,进而了解如何去使用这个工具。
git主要有三个作用
+ 版本迭代
+ 远程仓库
+ 分支管理
## 场景描述
简单来讲,我有一个项目,这个项目可以是代码,也可以是其他的,甚至可以是一首诗(即一个简单的txt文件)。
现在简化项目内容,我的项目就是在txt文件里写一首诗。
于是,我迅速的完成txt文件的新建,命名和编辑,得到了如下的文件:
```
文件名:poem.txt
内容:
第一段
第二段
第三段
```
写完之后我对第二段不满意,要删掉,但是又怕以后后悔,所以只能保留poem.txt同时复制一份poem(1).txt,文件内容如下
```
文件名:poem(1).txt
内容:
第一段
第三段
```
如果我进行多次类似的修改,甚至发给其他人帮我修改,又想保留之前的内容,那么我会有很多类似的txt文件。当某次需要寻找某一个版本的txt时,会发现已经乱了。这时候就需要一个工具可以帮我记录每次的修改,帮我回退到我想要的那个版本。这个需求就叫做**版本迭代**。
git就可以实现这个功能。git就类似一个仓库,通过git新建一个*仓库*,然后把项目文件放到*仓库*里面。每次修改都重新把文件加入到仓库,仓库会记录你本次都对仓库里的文件做了什么改动,并可以随时把文件的版本退回到某一次修改的版本。
我在自己电脑上建了一个仓库,放进去了一个项目,可是别人想看我写的诗,我只能通过复制粘贴给他。如果我是一个大诗人,有100000个人想看的写的诗,那我一个个的发给他们就有点麻烦。或者我把我写的诗放在我的硬盘里,如果有一天硬盘坏了,诗就没了。为了解决上述问题,我可以把我的诗放到“云”上,git同样支持通过命令上传到互联网上。这就是git的**远程仓库**功能。github就是一个提供远程仓库的网站,每个注册账号的人都拥有github提供的远程仓库。
有一天,诗歌爱好者杜小甫读到了我的诗,想和我共同创作,我也认可了他的能力,让他和我一起写一首诗。但是他直接在我的仓库里进行诗歌创作,可能会覆盖掉我写的内容。于是我让他在另外一条分支去写诗,他写完之后经过我的审核才能并入到我的主分支。这就是git的**分支管理**。
## git命令与使用
windows直接官网下载git bash
Linux/mac直接命令行安装
### 本地仓库
+ 本地仓库的创建与基本使用
1. 新建文件夹peom_project,作为*仓库*。通过以下命令将peom_project文件夹变成*仓库*。
```bash
cd /xx/xx/peom_project/ #cd 进入刚才新建的文件夹
git init #将peom_project文件夹创建为新的仓库,创建完成后文件夹中会多一个新的隐藏文件夹.git
```
2. 在文件夹下创建新的poem.txt文件,并把我的诗写在文件里面。此时,poem.txt并不在仓库里面,它只是在文件夹里面。需要使用以下命令将该文件加入到git仓库。
3. 将文件添加到仓库
```bash
git add poem.txt # 通过add添加文件到暂存区
git commit -m "my poem" # 通过commit将文件提交到仓库
```
初次使用**git commit**命令会被告知需要输入名字和email,此处的姓名和email只是为了标注提交人的身份,使用**git config**命令配置好即可。
```bash
git config user.name "mrnext"
git config user.email "313252625@qq.com"
```
需要注意的是通过add只是加入到一个清单里面,并没有把文件加入到仓库,通过git commit会将清单里面的文件一次性加入到仓库里面。例如,我可以将两首诗都加入到我的仓库。
```bash
git add poem1.txt # 通过add添加文件到暂存区
git add poem2.txt
git commit -m "my poem v2" # 通过commit将文件提交到仓库 -m 后面跟的字符串为本次提交的备注。
```
4. 查看日志文件
git仓库会记录每一次commit的改变,通过git log命令去查看这些信息。
![avatar](./gitpic/log.png)
可以看出我一共在库里面提交了2次,每次提交的用户名,时间和备注信息均会被展示出来。
5. 作业
* 下载git bash,使用bash新建一个git仓库,在git仓库里添加一个txt文件
* 尝试改动文件,进行第二次提交
* 了解git diff的用法
网友评论