Git版本管理工具


title: Git版本管理工具date: 2019-10-01 13:44:59

tags:

下载安装

去官网下载吧

建立Git库

1
2
3
4
5
//先新建一个空文件夹
mkdir newBash
//在git bash中
cd newBash //切换到newBash文件夹下
git init //初始化仓库

设置基础信息

配置相关信息

1
2
3
4
5
6
7
//在git bash中
git init
git config -l //查看当前配置
git config --global user.name "你的用户名"
git config --global user.email "邮箱地址"
git config --global color.ui true //代码颜色高亮显示
git config -l //再查看一下对不对

提交commit

基本步骤:

  1. 建立文件(本地工作文件夹)
  2. 追加文件(索引区stage)
  3. 提交文件(本地库local,远程库remote)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//新建一个文件
touch a.md

//在文件中写字符
echo "helloworld" > a.md

//查看此时状态
git status (未提交文件名颜色为红色)

//提交到索引区(也叫暂存区)
git add a.md (或者直接git add . 表示提交修改文件)

//再看看状态
git status (提交了颜色变绿了)

//将暂存区的文件提交到本地库(需要附带说明)
git commit -m "add file" //add file 就是说明,会显示在github的文件名后面

//再看看状态
git status (提交到本地库后,暂存区里就空了)

//看看提交历史
git log
//(会显示提交者的名字,时间,提交记录)

//提交到远程仓库
git push origin master

远程仓库

一般远程仓库有一个master主分支,多个其他分支.

现在展示如何从远端dev分支下载并修改,再推送.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//切换到一个文件夹下
cd newclone
//从远端仓库clone
git clone git@xxx.com

//查看当前分支
git branch (发现远端仓库只有master被clone下来,其他没有)

//查看所有分支(包括远端分支)
git branch -a (此时出现远端dev分支)

//创建dev分支,映射远端dev分支
git branch dev remotes/origin/dev

//上面几步不执行也可以,直接执行切换分支就可以clone数据

//切换到dev分支
git checkout dev (此时dev下所有文件都会clone下来)

//修改其中的文件
...

//推送素质三连
git add .
git commit -m "修改情况"
git push origin dev

分支branch

新建分支

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

//查看当前分支状态
git branch

//新建一个分支 dev
git branch dev

//切换到 dev 分支
git checkout dev

//修改文件
nano style.css
...

//提交 dev 分支中内容到索引区
git add .

//提交 dev 分支到本地库
git commit -m "added style.css"

//查看记录
git log

//切换到主分支 master
git checkout master

合并分支

书接上回

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

//查看分支状态
git branch

//在主分支 master 下,合并 dev 分支
git merge dev

//查看记录
git log

//查看后没有问题,删除开发分支
git branch -d dev

//最后查看分支状态
git branch

分支冲突

案例分析:

在dev分支创建index文件并修改.在主分支创建index文件并修改.合并分支,必有冲突

代码重现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

//创建 dev 分支并切换到 dev
git checkout -b dev

//创建文件.修改文件
nano index.html
...

//提交操作
git add .
git commit -m "modified by dev"

//切换到主分支
git checkout master

//重复上述操作
nano index.html
...

git add .
git commit -m "modified by master"

//查看分支状态
git branch

//合并分支(必有冲突)
git merge dev

//报错,在冲突文件中出现提示

//由 leader 决定以哪个分支的信息为准
//编辑文件,去掉冲突提示,选择以哪个分支的修改为准
nano index.html
...

//重新提交,并将
git add .
git commit -m "meraged by leader."

查看提交历史

书接上回

1
2
3
4
5
6
7
8
9
10
11
12
13

//提交之后,查看提交历史
git log

//查看最近几次历史,接一个数字
git log -3 (查看最近 3 次的)

//把历史记录缩成一行.简略显示
git log --oneline

//详细显示
git log -p (非常详细)

提交回退

1
2
3
4
5
6
7

//把刚修改的文件退到未修改状态
git checkout -- a.md (取消修改,恢复到初始状态)

//查看状态
git status (文件已恢复)

提交到索引区,想回退

1
2
3
4
5
6
7

//把文件从索引区头部退出
git reset HEAD a.md

//把刚修改的文件退到未修改状态
git checkout -- a.md

版本回退

回退到远程库最后提交的版本,覆盖本地工作区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

//回退到最后一次
git reset --hard HEAD

//回退到倒数第二次
git reset --hard HEAD~

//回退到倒数第三次
git reset --hard HEAD~2

//回退到指定版本
git reset --hard 5d79467
(后面的数字是提交时的 ID)

//如果没记住 ID,通过 reflog 找到现在位置的 id,再从过去返回来.
git reflog (会出现所有最近的记录,可以加-3,显示最近 3 条记录)

比较修改内容

修改文件后

1
2
3
4
5
6
7
8
9
10

//和修改前进行比较
git diff

//把修改后的文件加到索引区
git add .

//和索引区的进行比较
git diff --cached

文件操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14

//将文件添加到索引区
git add [file1 file2 ...]

//将工作文件夹下所有文件添加到索引区
git add .

//删除
git rm
//删除索引区文件
git rm --cached a.md
//更名
git mv a.md b.md

Git忽略管理

设置Git忽略文件,这些文件不参与Git库提交.

1
2
3
4

//新建.gitignore 文件
在该文件中写入要忽略的文件名

更新最后的提交

最后一条提交代码里有bug,想更改,又不想新增一条提交.把更改追加到最后一条提交里.

1
2
3
4
5
6
7
8
9
10

git commit -m "最后一次提交"

//发现 bug,修改 bug 后
//此时文件已修改
git add .

//提交到最后一次修改里
git commit --amend

使用Tag标签

系统版本号管理

例如: 1.1.3

格式: NNN.abc.xxx

  • NNN: 大版本号
  • abc: 每次做出小的更新时发布的版本号
  • xxx: 每次bug修正时发布的版本号
1
2
3
4
5
6
7
8
9
10

//查看当前版本号
git tag

//设置当前版本号
git tag v1.0.0

//查询该版本号时文件状态
git show v1.0.0