1、Git简介
1.1、Git结构
- 本地库:存储历史版本
- 暂存区:临时存储 ,git commit 提交 到本地库
- 工作区:写代码使用 ,git add 提交到 暂存区
1.2、Git和代码托管中心
代码托管中心:维护远程库
局域网:Gitlab服务器
外网: gitHub和码云
1.3、团队内部和跨团队合作
2、Git的常用命令
2.1、本地库初始化
命令:
git init
生产 .git/目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yncvQwsI-1596106388153)(C:\Users\txc\Desktop\git学习\snipaste_20200729_220543.jpg)]
注意此目录文件不要删除
2.2、设置签名
-
形式:
- 用户名:
- 邮箱 :
-
用途:目的是区分不同的开发人员,同远程代码库的用户名和密码没有关系
-
命令:
-
项目级别/仓库级别:仅在当前本地库范围内有效,配置信息保存在 本地库的 .git/conf 文件里
-
配置用户名
```shell git config user.name xxxx_pro ```
-
配置邮箱
git config user.email xxxx_pro@163.com
-
系统用户级别:登录系统的当前用户有效, 配置信息保存在 系统用户 .git/conf 文件里
-
配置系统级别用户名
git config --global user.name xxxx_pro
-
配置系统级别用户邮箱
git config --global user.email xxxx_pro@163.com
优先级:项目级别优先于系统用户级别,二者都有时采用项目级别的签名,项目级别没有采用系统用户级别,都没有会报错
-
-
2.3、 查看状态
-
命令:查看工作区,和缓冲区的状态
git status
2.4、添加操作
- 命令:将工作区 的新建和修改添加到缓存区
git add 文件
2.5、提交操作
- 命令:将暂存区的内存提交到本地库
git commit -m "commit description message" 文件名
2.6、查看历史记录
命令 :
git log
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iZQ6p1Ul-1596106388156)(C:\Users\txc\Desktop\git学习\gitlog命令.jpg)]
-
多屏显示控制方式:
- 空格向下翻页
- b 向上翻页
- q 退出
-
命令:
git log --pretty=oneline
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qRIesZGp-1596106388158)(C:\Users\txc\Desktop\git学习\gitlog-pretty.jpg)]
-
命令:
git --oneline
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P2jzRfPd-1596106388161)(C:\Users\txc\Desktop\git学习\gitlog-oneline.jpg)]
-
命令:
git reflog
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E2DR6Mfd-1596106388164)(C:\Users\txc\Desktop\git学习\git reflog.jpg)]
head相当于指针,操作head指针操作版本
2.7、前进后退版本
1.基于索引值操作
-
命令
git reset --hard 局部索引值
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bYYO3RQN-1596106388165)(C:\Users\txc\Desktop\git学习\回到过去.jpg)]
2.基于 head ^ 、~ 操作
-
命令:^ 一个 后退一个版本,n个^后退n步
$ git reset --hard head^ $ git reset --hard head~n 后退n步
2.8、Reset的参数对比
1. git reset --soft
-
仅仅在本地库移动head指针
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gs2XNNuL-1596106388166)(C:\Users\txc\Desktop\git学习\soft.jpg)]
2. git reset --mixed
-
在本地库移动head指针
-
重置缓存区
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v1GjJxG2-1596106388167)(C:\Users\txc\Desktop\git学习\mixed.jpg)]
3. git reset – hard
-
本地库移动指针
-
重置缓存区
-
重置工作区
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-02mIIidJ-1596106388169)(C:\Users\txc\Desktop\git学习\hard.jpg)]
2.9、永久删除文件找回
前提是已提交到本地库,再进行删除文件
- 操作:git reset --hard 指针位置
2.10 、文件比较
-
命令: 将工作区的文件和缓存区文件比较
git dif 文件名
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L7dAk8Ss-1596106388170)(C:\Users\txc\Desktop\git学习\snipaste_20200730_004154.jpg)]
-
命令:将工作区的文件和本地库的历史记录进行比较
git diff HEAD^ 文件
不指定文件,会比较所有文件
3、Git的分支
-
简介示意图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ygaC0y0W-1596106388171)(C:\Users\txc\Desktop\git学习\snipaste_20200730_005850.jpg)]
-
优点:
-
并行推进多个功能开发,提高开发效率
-
各个分支开发,不互相影响
-
创建分支
-
命令
$ git branch fix_hot
查看分支
- 命令:
$ git branch -v
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nuczg0Jb-1596106388172)(C:\Users\txc\Desktop\git学习\查看分支.jpg)]
切换分支
-
命令:
$ git checkout fix_hot
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DgfQ3fpi-1596106388173)(C:\Users\txc\Desktop\git学习\切换分支.jpg)]
合并分支
-
命令: 合并 必须在接受修改的分支上(Master)
$ git merge fix_hot
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j2z1Ga5O-1596106388174)(C:\Users\txc\Desktop\git学习\合并.jpg)]
-
冲突产生原因:master分支和fix_hot分支 对同一行数据进行修改或操作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9lu0Ym1V-1596106388175)(C:\Users\txc\Desktop\git学习\冲突表现.jpg)]
- HEAD 到=========== 为当前分支修改的内容
- ========= 到 master 为被合并的分支修改的内容
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LA8VIQac-1596106388176)(C:\Users\txc\Desktop\git学习\合并冲突.jpg)]
-
解决冲突:
- 重新编辑文件,删除特殊符号
- 把文件改到满意的程度,保存退出
- git add 文件名
- git commit -m " " 注意:提交不带具体的文件名
4、本地库与远程库交互
成员一上传至远程库
-
在 github 中创建远程库
-
在本地创建远程库地址别名:
$ git remote add origin https://github.com/xxx/huashan.git
-
查看别名版本
$ git remote -v
-
将本地库上传至远程库:origin 为别名, master为上传Master分支
$ git push origin master
成员二克隆至本地库
-
命令:团队协作,另一成员clone至本地库,修改完再push到远程库,中间需要权限,添加为团队。
$ git clone https://github.com/txcHello/huashan.git
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RYkTK917-1596106388177)(C:\Users\txc\Desktop\git学习\克隆.jpg)]
-
效果
- 完整的把远程库下载到本地
- 创建 origin 远程地址别名
- 初始化本地库
成员一 合并 成员二的文件
-
命令:pull=fetch+merge
-
git fetch [远程库地址别名] [远程分支名]
只是将远程库的文件拉取到本地,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KKR9V69g-1596106388178)(C:\Users\txc\Desktop\git学习\访问远程地址Fetch.jpg)]
-
git merge [远程库地址别名/远程分支名]
-
git pull [远程库地址别名] [远程分支名]
解决冲突
要点
如果不是基于 GitHub 远程库的最新版所做的修改, 不能推送, 必须先拉
取。
7)]
- 效果
- 完整的把远程库下载到本地
- 创建 origin 远程地址别名
- 初始化本地库
成员一 合并 成员二的文件
-
命令:pull=fetch+merge
-
git fetch [远程库地址别名] [远程分支名]
只是将远程库的文件拉取到本地,[外链图片转存中…(img-KKR9V69g-1596106388178)]
-
git merge [远程库地址别名/远程分支名]
-
git pull [远程库地址别名] [远程分支名]
解决冲突
要点
如果不是基于 GitHub 远程库的最新版所做的修改, 不能推送, 必须先拉
取。
拉取下来后如果进入冲突状态, 则按照“分支冲突解决” 操作解决即可。