一.安装
1.sudo su(管理员)-->apt install git
2.查看版本
git version
二. git基本概念
2.1 四个工作区
1.git本地有三个工作域:
工作区(
working directory),
暂存区(
stage/index),
资源库(
repository)
。如
果再算上远程服务器上的
git
仓库
(remote directory)
就可以分为四个工作域。其关系如下:
![](https://img-blog.csdnimg.cn/131ee16e0e52472da9e35945b0980302.png)
Workspace
: 工作区,就是你平时存放项目代码的地方
Index / Stage
: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件
列表信息
Repository
: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数
据。其中
HEAD
指向最新放入仓库的版本
Remote
: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据
交换
2.2 工作流程
git
工作的一般流程
:
1.
在工作目录中添加,修改文件
2.
将需要进行版本管理的文件放入暂存区
3.
将暂存区的文件提交到
git
仓库
2.3 文件的四种状态
Untracked:
未跟踪
,
此文件在文件夹中
,
但并没有加入到
git
库
,
不参与版本控制
.
通过
git add
状态
变为
Staged.
Unmodify:
文件已经入库
,
未修改
,
即版本库中的文件快照内容与文件夹中完全一致
.
这种类型的文
件有两种去处
,
如果它被修改
,
而变为
Modified.
如果使用
git rm
移出版本库
,
则成为
Untracked
文件
Modified:
文件已修改
,
仅仅是修改
,
并没有进行其他的操作
.
这个文件也有两个去处
,
通过
git add
可
进入暂存
staged
状态
,
使用
git checkout
则丢弃修改过
,
返回到
unmodify
状态
,
这个
git checkout
即
从库中取出文件
,
覆盖当前修改
Staged:
暂存状态
.
执行
git commit
则将修改同步到库中
,
这时库中的文件和本地文件又变为一致
,
文件为
Unmodify
状态
.
执行
git reset HEAD filename
取消暂存
,
文件状态为
Modified
三、git基本命令
创建本地仓库
1.创建一个目录
2.使用git init 命令将其变为一个可以通过git管理的仓库
注意事项:
第一次使用
git
命令提交代码之前,需要先设置用户名及邮箱,之后就不需要了:
其中
"
you@126.com
"
及
"youname"
应替换为你后面使用的真实邮箱和名字。
![](https://img-blog.csdnimg.cn/4f728d8faa464dbfa9539fdbdc72ba07.png)
3.使用git add filename 添加文件到暂存区
4.使用git status 查看仓库状态
![](https://img-blog.csdnimg.cn/cb42374d9de44f66b308bee11f5525c9.png)
5.使用 git commit -m "版本描述信息" 提交版本到仓库
![](https://img-blog.csdnimg.cn/3ceeac826647446380af5356f6fe4638.png)
6.使用git log查看提交的历史记录
![](https://img-blog.csdnimg.cn/ec09e8a10ee54d4ebed57c0f37b14e65.png)
7.使用git reflog 查看对仓库的操作日志
![](https://img-blog.csdnimg.cn/b7cb55bf81144a75b443b59b6f76435e.png)
8.使用git diff HEAD 比较当前内容与最后一次提交的版本的差异
.
使用
git diff HEAD
比较当前内容与最后一次提交的版本的差异
,
如下在
main.c
中添加了一行内容,显示
添加的一行前面有
‘+’
号标识。如果内容相同则该命令不显示输出结果。
HEAD
也可以省略默认就是与最近
一次比较。
9.使用git checkout filename 放弃对工作区代码的修改。
![](https://img-blog.csdnimg.cn/8496e5a00c484577ad337f88f33aa696.png)
10.使用git reset HEAD filename 从暂存区撤销
![](https://img-blog.csdnimg.cn/fb05b60c6d1349f4831640d908b46645.png)
11.使用git rm filename 删除一个文件, 此时提交到暂存区,需要commit后才在版本库中删除
![](https://img-blog.csdnimg.cn/06f4ba0a4f7b442d826c29e92170aee0.png)
12.使用git reset --hard HEAD^ 回退版本
四.git分支的操作命令
1.查看分支:git branch
![](https://img-blog.csdnimg.cn/57e2d64ac9064dbf8d19893ddf0a2aeb.png)
2.
创建分支:
git branch
分支名
3.
切换分支:
git checkout
分支名
4.
创建并切换到该分支:
git checkout -b
分支名
![](https://img-blog.csdnimg.cn/4ef37b3194d84e3fb8f2b05d672ceb17.png)
5.
删除分支
,
不能删除当前所处分支,切换到其它分支再删除:
git branch -d
分支名
![](https://img-blog.csdnimg.cn/aa71727a02c5413b88c104ea7c1d548f.png)
6.
合并某个分支到当前分支:
git merge
分支名 ,合并时可能产生冲突,需要解决冲突。
7.
历史记录一行显示
: git log --pretty=oneline
8.
以图表形式显示分支:
git log --graph
9.
保护现场
git stash,
当前工作区有代码修改了,是不能切换到其他分支,可以先保存现场,再切换
![](https://img-blog.csdnimg.cn/a8f50bb9257744daac5ec22b35f91730.png)
10.
列出所有保存的现场信息
git stash list
![](https://img-blog.csdnimg.cn/5aafac4ed4ff42b0b6d54d75fb4880fd.png)
11.
取出某次的现场信息,继续工作
:git stash pop "stash@{1}" ,
默认是最近一次,如果有多个现场,也 可以加上编号"stash@{1}"
指定获取某一个。不同分支的现场,应该回到对应分支再获取,否则会自动合 并现场到当前分支的工作区。