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
基本步骤:
- 建立文件(本地工作文件夹)
- 追加文件(索引区stage)
- 提交文件(本地库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
|