1 版本控制
- 协同修改
- 数据备份
- 权限控制
- 历史记录
- 分支管理
与Linux命令兼容
2 git结构
- 本地库:历史版本
- 暂存区:临时存储(git commit -----> 本地库)
- 工作区:写代码的区域(git add ----->暂存区)
3 git和代码托管中心
- 局域网:GitLab服务器
- 外网环境下:Github和码云
- 本地库和远程库 :
本地库 ----->>>>远程库 (push)
远程库 ----->>>>本地库 (clone)
4 git命令行操作
4.1 本地库初始化操作
95614@DESKTOP-OJ77LQG MINGW64 /d/workspaces/WeChat
$ git init
Initialized empty Git repository in D:/workspaces/WeChat/.git/
image.png
注意:.git目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡乱地修改。
.git是隐藏的资源
4.2 设置签名
- 形式:
用户名:tom
Email地址: goodMorning@qq.com
- 形式:
- 作用:区分不同开发人员的身份
- 辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系
- 命令:
项目级别/仓库级别:仅在当前本地库范围内生效
系统用户级别:登录当前操作系统的用户范围
优先级:就近原则:项目级别>系统用户级别,二者都有时采用项目级别的签名。
- 命令:
项目级别:
git config user.name tom_pro
git config user.email goodMorning@qq.com
image.png
系统用户级别:
git config -- global user.name tom_pro
git config -- global user.email goodMorning@qq.com
image.png
4.3 基本操作
4.3.1 状态查看: git status
查看工作区、暂存区的状态
4.3.2 添加操作: git add[file name]
将工作区的新建和修改添加到暂存区
4.3.3 提交操作: git commit -m "message"[file name]
将暂存区的内容提交到本地库
image.png
Tips:
用户刚刚启动vi/vim,便进入了命令模式。
在此状态下敲击键盘动作会被vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当做了
一个命令。
一下是常用的几个命令:
1、i切换到输入模式,以输入字符。
2、x删除当前光标所在处的字符。
3、:切换到底线命令模式,以在最底一行输入命令。
4.3.4 查看历史记录
-
git log
image.png
多屏显示控制方式:
空格向下翻页
b 向上翻页
q 退出 -
git log --pretty=oneline
image.png -
git log --oneline
image.png -
git reflog
image.png
HEAD@{移动到当前版本需要多少步}
4.3.5 前进后退
image.png-
基于索引值操作[推荐]
git reset --hard [局部索引值]
image.png - 使用^符号
只能后退
git reset --hard HEAD^
注:一个^表示后退一步,n个表示后退n步 - 使用~符号
只能后退
git reset --hard HEAD ~n
注:一个^表示后退n步
4.3.6 reset命令的三个参数对比
- soft参数
仅仅在本地库移动HEAD指针 - mixed参数
在本地库移动HEAD指针
重置暂存区 - hard参数
在本地库移动HEAD指针
重置暂存区
重置工作区
4.3.7 删除文件并找回
前提:删除前文件存在时的状态提交到本地库。
操作:git reset --hard[指针位置]
删除操作已经提交到本地库:指针位置指向历史记录
删除操作尚未提交到本地库:指针位置使用HEAD
4.3.8 比较文件差异
- git diff [文件名]
将工作区中的文件与暂存区进行比价 - git diff [本地库中历史版本][文件名]
将工作区中的文件和本地库历史记录比较
4.4 分支管理
4.4.1 什么是分支?
版本控制中,多条线同时推进
4.4.2 分支的好处?
同时并行推荐多个功能,提交开发效率,互补干扰
4.4.3 分支的操作
- 创建分支:git branch[分支名]
- 查看分支:git branch -v
- 切换分支:git checkout[分支名]
- 合并分支
第一步:切换到接受修改的分支上(被合并,增加新内容)上
git checkout [被合并分支名]
第二步:执行merge命令
git merge [有新内容分支名] -
解决冲突
冲突的表现
image.png
apple
apple
apple
1111
//当前分支的内容
<<<<<<< HEAD
app@@@@@@@@@@@@@@@@le edit by hot_fix
=======
//令一分支的内容
app@@@@@@@@@@@@@@@@le edit by master
>>>>>>> master
apple
apple
冲突的解决
第一步:编辑文件,删除特殊符号
第二步:把文件修改到满意的程度,保存退出
第三步:git add[文件名]
第四步:git commit -m "日志信息" 需注意:此时commit一定不能带具体的文件名
网友评论