目录
- 引入
- 版本控制
- 集中式和分布式版本控制
- git工作机制
- 代码托管中心
- Git常用命令
- 设置用户签名
- 初始化本地库
- 查看库状态
- add和提交
- 版本穿梭
- git分支操作
- 分支定义
- 分支好处
- 分支操作
- 查看分支
- 创建分支
- 切换分支
- 分支合并💕✨🩷
- 合并冲突
- git团队协作
- 团队内协作
- 跨团队协作
- Github远程库
- 创建远程库和别名
- push推送
- 拉取远程库到本地库
- 三级目录
- 项目场景:
- 问题描述
- 原因分析:
- 解决方案:
学习链接 尚硅谷 (链接: link)
TO某个姓li名tao喜欢视奸的男的,别视奸了哈,挺没劲的。🤮🤮🤮💩
引入
版本控制
git主要是用于团队协作
小红和小蓝各自修改代码不同的区域,合并到master分支之后就是把修改的地方合并进去
集中式和分布式版本控制
集中式问题:代码服务器的单点服务器问题
分布式:本地也可以做版本控制,每个客户端保留完整项目;远程一般是服务商也不容易挂掉
git工作机制
提交本地库之后就会有历史版本,eg v4版本是在v3版本之上的,所以历史版本是不能删掉的
- 提交历史版本之后就可以push到远程库;
代码托管中心
代码托管中心一般就是我们认为的远程库
Git常用命令
🩷🩷🩷git中table也是可以自动补全的
设置用户签名
前面两个设置好用户签名,用于提交代码,==签名的作用就是为了区分不同操作者身份
设置好用户签名之后,在本地的user账号里面的.gitconfig可以看到信息,
- 这个和将来登录github或者其他远程库的账号没有任何关系
初始化本地库
git init:初始化本地库之后才可以管理当前的文档
ll命令:展示所有内容
查看库状态
vim中【先按esc】yy是复制,p是粘贴 :wq是保存
bash中linux命令通用
里面有文件没有git add进入暂存区就会红色提示
add和提交
中间那个965c6al]是提交的版本号
使用git reflog可以查看提交版本
git log可以看到详细提交信息,包括用户签名
- 修改之后就可以使用git status查看状态,会发现有改变,然后再add【会变绿】,再git commit,然后使用git log或者git relog就很方便
版本穿梭
版本穿梭会影响工作区,谨慎使用
如果需要恢复到之前的版本就是用版本穿梭,
具体操作:git reflog查看需要穿梭的版本好,然后使用git reset --hard 版本号,然后指针就会指向恢复的版本
前面提到的指针就是HEAD文件中记录的,里面会告诉我当前是指向哪个分支【例如master】;要寻找具体是哪个版本号在ref里面找HEAD里面的分支的名字,里面记录的就是版本号;
git分支操作
分支定义
定义:可以简单理解分支为一个单独的copy;开发完之后再合并进去
示意图:master也是一个分支,或者称为主线分支。
分支好处
分支操作
注意对话框,最右边显示的就是当前的分支
查看分支
git branch -v用于查看当前有几个分支,例如下面这个只有一个分支master
创建分支
git branch 分支名:就可以创建一个新的分支 例如起名为hot-fix
切换分支
git checkout 分支名:
然后在这个分支下面修改文件,然后add,然后commit
分支合并💕✨🩷
需要回到master分支上【git checkout master】,然后git merge hot-hit,就表示将hot-fix分支合并到master分支上;如果弄反了,没有回到master分支,而是还在hot-fix分支上,那就是自己合并自己
- 一定要切回被合并的主干分支上
- 下面这个图就表示合并成功,master合并的时候就被改了
合并冲突
例如:如果master分支和hot-fix分支都修改了同一个地方,就不会自动合并;
- 下面黄框表示合并没有成功,还在合并
这时进入提醒conflict的文件里面用cat,会自动显示冲突的地方;人为修改之后再add[ git add hello.txt],再commit,注意,这个时候commit的时候不用加文件名,会自动合并刚刚修改之后的
这个就是加了文档名和不加文档名的区别。加了文档名会报错,不知道合并哪一个,不加文档名不报错,直接合并刚刚人工手动修改的那个 - 注意!这里修改的还是master分支上面的,刚刚就是站在master分支角度合并出错去修改的,那么hot-fix分支并不会改变
git团队协作
团队内协作
已有本地库,如果再使用pull拉下来的话,本地库会更新显示别人的修改
跨团队协作
远程库2首先fork【也就是复制,github上的fork就是这个意思】,开发好之后 pull ,远程库1审核后可以merge
Github远程库
创建远程库和别名
创造别名:因为远程的链接有点长,起个名字
git remote -v 查看跟当前本地库链接的远程库有哪些
git remote add 别名 分支
push推送
git push 刚刚起的别名 分支 可能因为网络原因失败
最好远程和本地的名字是一样的
拉取远程库到本地库
本地库和远程库不是同步的了,就需要拉取到本地然后更新修改
git pull 别名 远程端的分支名字
三级目录
项目场景:
提示:这里简述项目相关背景:
例如:项目场景:示例:通过蓝牙芯片(HC-05)与手机 APP 通信,每隔 5s 传输一批传感器数据(不是很大)
问题描述
提示:这里描述项目中遇到的问题:
例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据
APP 中接收数据代码:
@Overridepublic void run() {bytes = mmInStream.read(buffer);mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();}
原因分析:
提示:这里填写问题的分析:
例如:Handler
发送消息有两种方式,分别是 Handler.obtainMessage()
和 Handler.sendMessage()
,其中 obtainMessage
方式当数据量过大时,由于 MessageQuene
大小也有限,所以当 message
处理不及时时,会造成先传的数据被覆盖,进而导致数据丢失。
解决方案:
提示:这里填写该问题的具体解决方案:
例如:新建一个 Message
对象,并将读取到的数据存入 Message
,然后 mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();
换成 mHandler.sendMessage()
。