技术储备--Git学习

参考教程

Git简介
基本使用
  • 安装Git
    安装完成后需要配置一下name和email.
git config --global user.name csdn
git config --global user.email csdn@cn.com
git init
git add ream.txt
git commit -m "worte a readme file"
  • 查看仓库状态
git status
  • 查看具体修改
git diff readme.txt 
  • 显示提交历史
git log
git log --pretty=oneline
  • 版本回退
git reset --hard HEAD^
  • 查看命令历史
git reflog
  • 管理修改
    为什么Git比其他版本控制系统设计得优秀?
    因为Git跟踪并管理的是修改, 而非文件.

  • 丢弃工作区的修改
    git checkout其实是用版本库里的版本替换工作区的版本, 无论工作区是修改还是删除, 都可以“一键还原”.

git checkout -- readme.txt
  • 丢弃暂存区的修改
git reset HEAD readme.txt
  • 删除文件
rm test.txt
git rm test.txt
git commit -m "remove test.txt"
远程仓库
  • 关联远程仓库
git remote add origin git@github.com:csdn/studygit.git
  • 关联后推送master分支
// 由于远程库是空的, 我们第一次推送master分支时, 加上了-u参数.
// Git不但会把本地的master分支内容推送的远程新的master分支, 还会把本地的master分支和远程的master分支关联起来, 在以后的推送或者拉取时就可以简化命令.
git push -u origin master
  • 推送最新修改
git push origin master
  • 从远程库克隆
git clone git@github.com:csdn/study2.git
分支管理
// 创建并切换分支
git checkout -b dev

// 创建分支
git branch dev
// 切换分支
git checkout dev
  • 查看当前分支
git branch
  • 合并指定分支到当前分支
git merge dev
  • 删除分支
git branch -d dev
  • 查看分支合并图
git log --graph --pretty=oneline --abbrev-commit
git log --graph --pretty=oneline --abbrev-commit
  • 禁用Fast forward
    什么时候用到这个禁用Fast forward?
    通常, 合并分支时, 如果可能, Git会用Fast forward模式, 但这种模式下, 删除分支后, 会丢掉分支信息.
git merge --no-ff -m "merge with no-ff" dev
  • Bug分支
// 临时保存现场
git stash

// 查看保存的工作现场
git stash list

// 恢复现场
// 方法一
git stash apply stash@{0}
git stash drop stash@{0}
// 方法二
git stash pop
  • Feature分支
开发一个新feature, 最好新建一个分支;

如果要丢弃一个没有被合并过的分支, 可以通过git branch -D <name>强行删除.
// 查看远程库的信息
git remote
// 显示更详细的信息
git remote -v

// 推送分支
git push origin master

// 抓取分支
git pull

多人协作的工作模式通常是这样:
首先, 可以试图用git push origin <branch-name>推送自己的修改;
如果推送失败, 则因为远程分支比你的本地更新, 需要先用git pull试图合并;
如果合并有冲突, 则解决冲突, 并在本地提交;
没有冲突或者解决掉冲突后, 再用git push origin <branch-name>推送就能成功!
如果git pull提示no tracking information, 则说明本地分支和远程分支的链接关系没有创建, 用命令git branch --set-upstream-to <branch-name> origin/<branch-name>.
  • Rebase
rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易, 因为分叉的提交需要三方对比.

git rebase
标签管理
  • 几个思考
创建和删除标签都是瞬间完成的, 为什么?
因为标签就是指向某个commit的指针, 跟分支很像, 但是分支可以移动, 标签不能移动.

Git有commit, 为什么还要引入tag?
  • 创建标签
// 查看标签
git tag

// 打一个新标签
git tag v1.0(默认为HEAD)
git tag v0.9 f52c633
git tag -a v0.1 -m "version 0.1 released" 1094adb

// 查看说明文字
git show v0.1
  • 操作标签
// 删除标签
git tag -d v0.1

// 推送某个标签到远程
git push origin v1.0

// 一次性推送全部尚未推送到远程的本地标签
git push origin --tags

// 删除远程标签
// 1.先从本地删除
git tag -d v0.9
// 2.然后从远程删除
git push origin :refs/tags/v0.9
自定义Git
  • 显示颜色
git config --global color.ui true
  • 忽略特殊文件
在Git工作区的根目录下创建一个特殊的.gitignore文件, 然后把要忽略的文件名填进去, Git就会自动忽略这些文件.

忽略文件的原则:
忽略操作系统自动生成的文件, 比如缩略图等;
忽略编译生成的中间文件, 可执行文件等, 也就是如果一个文件是通过另一个文件自动生成的, 那自动生成的文件就没必要放进版本库, 比如Java编译产生的.class文件;
忽略你自己的带有敏感信息的配置文件, 比如存放口令的配置文件.

// .gitignore写得有问题, 需要找出来到底哪个规则写错了, 可以用git check-ignore命令检查
git check-ignore -v App.class
  • 配置别名
git config --global alias.st status

配置Git的时候, 加上--global是针对当前用户起作用的, 如果不加, 那只针对当前的仓库起作用.

// 配置文件在哪?
每个仓库的Git配置文件都放在.git/config文件中
而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中
第一步,安装git
sudo apt-get install git

第二步,创建一个git用户,用来运行git服务
sudo adduser git

第三步,创建证书登录
收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个.

第四步,初始化Git仓库
sudo git init --bare sample.git
sudo chown -R git:git sample.git

第五步,禁用shell登录

第六步,克隆远程仓库

最后一次修改时间: 2018-5-22 20:47:02

资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 “STC单片机电压测量”是一个以STC系列单片机为基础的电压检测应用案例,它涵盖了硬件电路设计、软件编程以及数据处理等核心知识点。STC单片机凭借其低功耗、高性价比和丰富的I/O接口,在电子工程领域得到了广泛应用。 STC是Specialized Technology Corporation的缩写,该公司的单片机基于8051内核,具备内部振荡器、高速运算能力、ISP(在系统编程)和IAP(在应用编程)功能,非常适合用于各种嵌入式控制系统。 在源代码方面,“浅雪”风格的代码通常简洁易懂,非常适合初学者学习。其中,“main.c”文件是程序的入口,包含了电压测量的核心逻辑;“STARTUP.A51”是启动代码,负责初始化单片机的硬件环境;“电压测量_uvopt.bak”和“电压测量_uvproj.bak”可能是Keil编译器的配置文件备份,用于设置编译选项和项目配置。 对于3S锂电池电压测量,3S锂电池由三节锂离子电池串联而成,标称电压为11.1V。测量时需要考虑电池的串联特性,通过分压电路将高电压转换为单片机可接受的范围,并实时监控,防止过充或过放,以确保电池的安全和寿命。 在电压测量电路设计中,“电压测量.lnp”文件可能包含电路布局信息,而“.hex”文件是编译后的机器码,用于烧录到单片机中。电路中通常会使用ADC(模拟数字转换器)将模拟电压信号转换为数字信号供单片机处理。 在软件编程方面,“StringData.h”文件可能包含程序中使用的字符串常量和数据结构定义。处理电压数据时,可能涉及浮点数运算,需要了解STC单片机对浮点数的支持情况,以及如何高效地存储和显示电压值。 用户界面方面,“电压测量.uvgui.kidd”可能是用户界面的配置文件,用于显示测量结果。在嵌入式系统中,用
资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 在 Android 开发中,Fragment 是界面的一个模块化组件,可用于在 Activity 中灵活地添加、删除或替换。将 ListView 集成到 Fragment 中,能够实现数据的动态加载与列表形式展示,对于构建复杂且交互丰富的界面非常有帮助。本文将详细介绍如何在 Fragment 中使用 ListView。 首先,需要在 Fragment 的布局文件中添加 ListView 的 XML 定义。一个基本的 ListView 元素代码如下: 接着,创建适配器来填充 ListView 的数据。通常会使用 BaseAdapter 的子类,如 ArrayAdapter 或自定义适配器。例如,创建一个简单的 MyListAdapter,继承自 ArrayAdapter,并在构造函数中传入数据集: 在 Fragment 的 onCreateView 或 onActivityCreated 方法中,实例化 ListView 和适配器,并将适配器设置到 ListView 上: 为了提升用户体验,可以为 ListView 设置点击事件监听器: 性能优化也是关键。设置 ListView 的 android:cacheColorHint 属性可提升滚动流畅度。在 getView 方法中复用 convertView,可减少视图创建,提升性能。对于复杂需求,如异步加载数据,可使用 LoaderManager 和 CursorLoader,这能更好地管理数据加载,避免内存泄漏,支持数据变更时自动刷新。 总结来说,Fragment 中的 ListView 使用涉及布局设计、适配器创建与定制、数据绑定及事件监听。掌握这些步骤,可构建功能强大的应用。实际开发中,还需优化 ListView 性能,确保应用流畅运
<think>好的,用户问的是如何学习RT-Thread。首先,我需要确认用户对RT-Thread的了解程度。RT-Thread是一个开源的实时操作系统,主要应用于嵌入式系统,所以用户可能有一定的嵌入式背景,或者刚开始接触。接下来,我需要考虑用户的学习目标,是想进行实际项目开发,还是学术研究,或者是兴趣学习?不同的目标可能需要不同的学习路径。 用户可能对RT-Thread的基本概念不太清楚,比如内核、组件、软件包等。因此,我应该先介绍RT-Thread的架构,帮助用户建立整体的认识。然后,学习环境的搭建是基础,需要指导用户如何安装工具链、配置开发环境,可能涉及RT-Thread Studio或者Env工具的使用。这部分要详细,避免用户卡在环境配置上。 接下来,用户可能需要从基础开始,比如内核功能,任务调度、同步机制、中断管理等,这些是实时操作系统的核心。通过简单的例程,如LED闪烁,可以帮助用户理解任务创建和管理。然后逐步深入,引入更复杂的功能,如消息队列、信号量、事件集等,并结合实际应用场景进行说明,比如传感器数据采集、通信协议处理等。 用户可能对RT-Thread的组件和软件包感兴趣,比如文件系统、网络框架、GUI等。这些内容需要分模块介绍,并给出学习资源,比如官方文档或社区教程。同时,软件包生态丰富,用户可能需要指导如何查找和使用现有的软件包,避免重复造轮子。 实践项目是关键,用户可能想通过实际项目巩固知识。建议从简单项目开始,逐步增加复杂度,比如环境监测系统、智能家居节点等。参与开源项目也是一个好方法,可以提升实战能力。 遇到问题时,用户需要知道如何获取帮助。官方文档、论坛、社区群都是重要资源,应该推荐这些渠道。同时,调试技巧和日志分析也是解决问题的关键,需要提及。 最后,持续学习很重要,建议用户关注更新、参与活动、阅读源码和书籍。需要检查是否有遗漏的要点,比如开发板的选择、工具的使用细节,或者常见错误的解决方法。确保回答结构清晰,步骤明确,资源链接正确,帮助用户系统学习RT-Thread。</think>学习RT-Thread(一个开源的实时操作系统)需要系统性规划,以下是分阶段的学习路径建议: --- ### 一、基础知识储备 1. **嵌入式基础** - 掌握C语言编程(重点:指针、结构体、内存管理) - 理解ARM Cortex-M架构(如STM32系列芯片) - 熟悉硬件基础:GPIO、UART、I2C、SPI等外设 - 学习Makefile和交叉编译工具链 2. **操作系统概念** - 任务调度、信号量、消息队列、内存管理等RTOS核心机制 - 实时性概念:优先级抢占、中断响应延迟 --- ### 二、RT-Thread核心学习 1. **环境搭建** - 安装RT-Thread Studio(官方IDE)或使用Env工具+VS Code - 准备开发板(推荐STM32F4/F7/H7系列或ESP32) - 创建第一个工程:`$ scons --target=mdk5` 生成Keil工程 2. **内核实践** - 任务创建:`rt_thread_create()` - 同步机制: ```c /* 信号量示例 */ struct rt_semaphore dynamic_sem; rt_sem_init(&dynamic_sem, "dsem", 0, RT_IPC_FLAG_FIFO); ``` - 定时器使用:硬件定时器vs软件定时器 - 内存管理:静态内存池与动态堆分配 3. **组件学习** - **FinSH控制台**:通过串口实现系统调试 - **设备驱动框架**:PIN设备、SPI设备框架 - **文件系统**:挂载LittleFS/ELM-FAT - **网络协议栈**:LwIP协议栈配置与socket编程 --- ### 三、进阶技能提升 1. **软件包生态** - 通过`pkgs --update`更新软件包 - 常用软件包: - 物联网:Paho-MQTT、WebClient - 图形库:LVGL、Persimmon UI - 算法:u8g2(OLED驱动)、CJSON 2. **系统裁剪优化** - 使用`menuconfig`配置系统组件 - 内存占用分析:`list_mem`命令 - 线程栈优化:通过`msh > ps`查看线程状态 3. **实战项目案例** - 智能家居节点:传感器数据采集+MQTT上传 - 工业控制器:Modbus协议实现 - 穿戴设备:低功耗配置(PM组件) --- ### 四、学习资源推荐 1. **官方资料** - [RT-Thread文档中心](https://www.rt-thread.org/document/site/) - GitHub仓库:`https://github.com/RT-Thread/rt-thread` 2. **实践工具** - QEMU模拟器:无需硬件即可体验 - RT-Thread在线仿真:https://www.rt-thread.io/studio/simulator/ 3. **社区支持** - 官方论坛:https://club.rt-thread.org/ - 技术交流群(推荐关注公众号获取入群方式) --- ### 五、学习路线图 ``` 第1-2周:完成环境搭建+LED闪烁实验 第3周:实现多任务通信(消息队列+事件集) 第4周:移植传感器驱动(如DHT11) 第5周:搭建Web服务器(使用netutils组件) 第6周:完成综合性项目(如智能温控系统) ``` --- **关键提示**:建议通过`git clone https://gitee.com/rtthread/docs-online`获取最新示例代码,配合《RT-Thread内核实现与应用开发实战指南》一书进行系统学习。遇到问题优先查阅[API手册](https://www.rt-thread.org/document/api/)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值