diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/Day3/\344\273\243\347\240\201/\344\273\243\347\240\2013.md" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/Day3/\344\273\243\347\240\201/\344\273\243\347\240\2013.md" new file mode 100644 index 0000000000000000000000000000000000000000..2161c3126f49c45ffff996cd7bb42162b1a9756f --- /dev/null +++ "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/Day3/\344\273\243\347\240\201/\344\273\243\347\240\2013.md" @@ -0,0 +1,126 @@ +#include +#include +#include +#define DBG_TAG "main" +#define DBG_LVL DBG_LOG +#include + +#include +#include + +rt_thread_t thread1 = RT_NULL; +rt_thread_t thread2 = RT_NULL; +struct rt_thread thread3; +rt_mq_t my_mq = RT_NULL; +char thread3_stack[RT_ALIGN(1024,RT_ALIGN_SIZE)]; + +typedef struct{ + int message; + char name; +}mq_msg; +mq_msg my_mq_msg; + +void thread1_back(void *parameter) +{ + mq_msg thread_mq; + while(1) + { + rt_mq_recv(my_mq, &thread_mq, sizeof(thread_mq), RT_WAITING_FOREVER); + char string[100] = {0}; + snprintf(string,sizeof(string),"receive data is ==> name:%c, data:%d\r\n",thread_mq.name,thread_mq.message); + rt_kprintf(string); + } +} + +void thread3_back(void *parameter) +{ + mq_msg thread3_mq; + while(1) + { + thread3_mq.name = 'C'; + thread3_mq.message = 666; + rt_mq_send_wait(my_mq, &thread3_mq, sizeof(thread3_mq),RT_WAITING_FOREVER); + rt_thread_delay(500); + } +} + +void thread2_back(void *parameter) +{ + mq_msg thread2_mq; + while(1) + { + thread2_mq.name = 'B'; + thread2_mq.message = 777; + rt_mq_send_wait(my_mq, &thread2_mq, sizeof(thread2_mq),RT_WAITING_FOREVER); + rt_thread_delay(1000); + } +} + +int thread_config(void) +{ + rt_err_t check = RT_NULL; + my_mq = rt_mq_create("mq", sizeof(my_mq_msg), 5, RT_IPC_FLAG_FIFO); + if(my_mq != RT_NULL) + { + rt_kprintf("mq create ok\r\n"); + } + thread1 = rt_thread_create( "thread1", + thread1_back, + RT_NULL, + 1024, + 5, + 10); + if(thread1 != RT_NULL) + { + rt_kprintf("thread1 create ok!\r\n"); + rt_thread_startup(thread1); + } + else { + return 1; + } + thread2 = rt_thread_create( "thread2", + thread2_back, + RT_NULL, + 1024, + 5, + 10); + if(thread2 != RT_NULL) + { + rt_kprintf("thread2 create ok!\r\n"); + rt_thread_startup(thread2); + } + else { + return 1; + } + check = rt_thread_init( &thread3, + "thread3", + thread3_back, + RT_NULL, + &thread3_stack[0], + sizeof(thread3_stack), + 5, + 10); + if(check == RT_EOK) + { + rt_kprintf("thread3 init ok\r\n"); + rt_thread_startup(&thread3); + } + else { + return 1; + } + return 0; +} + +int main(void) +{ + if(thread_config()) + { + return 0; + } + while (1) + { + rt_thread_mdelay(10000); + } + + return RT_EOK; +} diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/Day3/\344\275\234\344\270\232/\344\275\234\344\270\2323.md" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/Day3/\344\275\234\344\270\232/\344\275\234\344\270\2323.md" new file mode 100644 index 0000000000000000000000000000000000000000..e554e8dc3663e04d52844c8baac4076e699b9a62 --- /dev/null +++ "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/Day3/\344\275\234\344\270\232/\344\275\234\344\270\2323.md" @@ -0,0 +1,3 @@ +1. 笔记已提交 +2. 论坛已提交 +3. 内容已开源 diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/Day3/\345\233\276\347\211\207/\344\273\243\347\240\2013.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/Day3/\345\233\276\347\211\207/\344\273\243\347\240\2013.png" new file mode 100644 index 0000000000000000000000000000000000000000..ea0972df839e876b3d7300e2fa43e43feb26a4fd Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/Day3/\345\233\276\347\211\207/\344\273\243\347\240\2013.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/Day3/\347\254\224\350\256\260/\347\254\224\350\256\2603.md" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/Day3/\347\254\224\350\256\260/\347\254\224\350\256\2603.md" new file mode 100644 index 0000000000000000000000000000000000000000..2e677ae6dc683f8fce431db82f6e19b0b5ee3a39 --- /dev/null +++ "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/Day3/\347\254\224\350\256\260/\347\254\224\350\256\2603.md" @@ -0,0 +1,45 @@ +# 课程笔记 +1. RT-Thread 线程创建方式 + RT-Thread 提供两种线程创建方式,各有适用场景: + 11. 动态创建 + 111. 特点:通过系统堆内存分配线程控制块和栈空间,使用灵活但需注意内存管理 + 112. 关键函数:rt_thread_create() 创建线程,rt_thread_startup() 启动线程 + 113. 适用场景:需要动态调整线程数量或生命周期的场景,如网络连接处理 + 12. 静态创建 + 111. 特点:使用预分配的静态内存区域,无需动态内存分配,适合资源受限环境 + 112. 关键步骤:定义线程栈数组和线程控制块,调用 rt_thread_init() 初始化,再调用 rt_thread_startup() 启动 + 113. 适用场景:资源受限的嵌入式系统或对内存使用有严格控制的场景 +2. RT-Thread 线程通信(邮箱) + 邮箱是 RT-Thread 中高效的线程间通信机制: + 21. 核心概念 + 211. 消息载体:邮箱传递的是固定大小的 "邮件",通常是指针或整数(如 32 位系统中为 4 字节) + 212. 工作模式:支持阻塞和非阻塞两种接收模式 + 213. 缓冲区:邮箱可配置缓冲区大小,支持多邮件排队 + 22. 典型应用场景 + 221. 传递命令或状态标志 + 222. 指针传递:用于共享大型数据结构(避免复制开销) + 223. 跨线程事件通知 +3. RT-Thread 信号量 + 信号量是实现线程同步与互斥的基础工具: + 31. 两种信号量类型 + 311. 二值信号量:初始值为 1,用于互斥访问临界资源,确保同一时间只有一个线程访问 + 312. 计数信号量:初始值大于 1,用于资源计数,例如限制同时访问某资源的线程数量 + 32. 核心操作 + 321. 获取信号量:rt_sem_take(),可设置等待超时时间 + 322. 释放信号量:rt_sem_release(),释放资源使用权 + 33. 常见用途 + 331. 互斥锁:保护共享资源(如全局变量、硬件外设) + 332. 生产者 - 消费者模型:控制缓冲区资源使用 + 333. 事件触发:一个线程等待另一个线程完成特定操作 +4. RT-Thread 静态创建线程栈对齐 + 线程栈对齐是保证系统稳定性的关键: + 41. 栈对齐要求 + 411. RT-Thread 要求线程栈起始地址必须按 RT_ALIGN_SIZE 对齐(通常为 4 字节或 8 字节,取决于架构) + 412. 栈对齐栈大小也需是对齐单位的整数倍 + 42. 栈对齐为什么需要对齐 + 421. 硬件限制:部分架构(如 ARM)要求访问内存时地址必须对齐,否则会触发异常 + 422. 性能优化:对齐的内存访问效率更高 + 43. 开发者注意事项 + 431. 使用静态数组定义栈时,编译器会自动对齐 + 432. 使用 RT_ALIGN 宏确保栈大小符合对齐要求 + 433. 避免手动计算栈地址,使用 RT-Thread 提供的初始化函数自动处理对齐 \ No newline at end of file diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\344\275\234\344\270\232/\344\273\243\347\240\201.md" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\344\275\234\344\270\232/\344\273\243\347\240\201.md" new file mode 100644 index 0000000000000000000000000000000000000000..22e51db6aa995edb87c777e77c2a9dc35f2c854c --- /dev/null +++ "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\344\275\234\344\270\232/\344\273\243\347\240\201.md" @@ -0,0 +1,103 @@ +#include +#include +#include +#define DBG_TAG "main" +#define DBG_LVL DBG_LOG +#include + +rt_thread_t thread1 = RT_NULL; +rt_thread_t thread2 = RT_NULL; +struct rt_thread thread3; + +char thread3_stack[RT_ALIGN(1024,RT_ALIGN_SIZE)]; + +void thread1_back(void *parameter) +{ + while(1) + { + rt_kprintf("thread1 run\n"); + rt_thread_delay(1000); + } +} + +void thread2_back(void *parameter) +{ + while(1) + { + rt_kprintf("thread2 run\n"); + rt_thread_delay(1000); + } +} + +void thread3_back(void *parameter) +{ + while(1) + { + rt_kprintf("thread3 run\n"); + rt_thread_delay(500); + } +} + +int thread_config(void) +{ + thread1 = rt_thread_create( "thread1", + thread1_back, + RT_NULL, + 1024, + 5, + 10); + if(thread1 != RT_NULL) + { + rt_kprintf("thread1 create ok!\r\n"); + rt_thread_startup(thread1); + } + else { + return 1; + } + thread2 = rt_thread_create( "thread2", + thread2_back, + RT_NULL, + 1024, + 5, + 10); + if(thread2 != RT_NULL) + { + rt_kprintf("thread2 create ok\r\n"); + rt_thread_startup(thread2); + } + else { + return 1; + } + rt_err_t check = RT_NULL; + check = rt_thread_init( &thread3, + "thread3", + thread3_back, + RT_NULL, + &thread3_stack[0], + sizeof(thread3_stack), + 4, + 10); + if(check == RT_EOK) + { + rt_kprintf("thread3 init ok\r\n"); + rt_thread_startup(&thread3); + } + else { + return 1; + } + return 0; +} + +int main(void) +{ + if(thread_config()) + { + return 0; + } + while (1) + { + rt_thread_mdelay(10000); + } + + return RT_EOK; +} \ No newline at end of file diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\344\275\234\344\270\232/\344\275\234\344\270\232.md" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\344\275\234\344\270\232/\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..ec61d8f894032b5d837b6e85417a6a6315a5b318 --- /dev/null +++ "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\344\275\234\344\270\232/\344\275\234\344\270\232.md" @@ -0,0 +1,3 @@ +1. 笔记已提交 +2. 论坛已提交 +3. 内容已开源 \ No newline at end of file diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\344\275\234\344\270\232/\344\275\234\344\270\2322.md" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\344\275\234\344\270\232/\344\275\234\344\270\2322.md" new file mode 100644 index 0000000000000000000000000000000000000000..277ddbbe94c32960061efd35fabcd11c62d9b88d --- /dev/null +++ "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\344\275\234\344\270\232/\344\275\234\344\270\2322.md" @@ -0,0 +1,3 @@ +1. 笔记已提交 +2. 论坛已提交 +3. 内容已开源 \ No newline at end of file diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\344\275\234\344\270\232/\347\205\247\347\211\2071.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\344\275\234\344\270\232/\347\205\247\347\211\2071.png" new file mode 100644 index 0000000000000000000000000000000000000000..048159b2ef420a065e52257022ac8fd313e734d8 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\344\275\234\344\270\232/\347\205\247\347\211\2071.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\344\275\234\344\270\232/\347\205\247\347\211\2072.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\344\275\234\344\270\232/\347\205\247\347\211\2072.png" new file mode 100644 index 0000000000000000000000000000000000000000..b4faf8cea01a919be3e96f11baa7ae8b6217ba27 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\344\275\234\344\270\232/\347\205\247\347\211\2072.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\344\275\234\344\270\232/\350\277\220\350\241\214.png" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\344\275\234\344\270\232/\350\277\220\350\241\214.png" new file mode 100644 index 0000000000000000000000000000000000000000..12b3ca3e1ad810f6d5ffa92a2cd1039d289d9cd4 Binary files /dev/null and "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\344\275\234\344\270\232/\350\277\220\350\241\214.png" differ diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\347\254\224\350\256\260/\347\254\224\350\256\260.md" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\347\254\224\350\256\260/\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..0a39e029e6f9b6f04b273e177004c6bf7ffdc886 --- /dev/null +++ "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\347\254\224\350\256\260/\347\254\224\350\256\260.md" @@ -0,0 +1,4 @@ +1. 了解RT-Thread开发环境和基础的内核机 +2. 安装RT-Thread Studio 开发工具 -- [RT-Thread Studio](https://www.rt-thread.com/studio.html) +3. 创建工程 --- f407 +4. 编译运行 diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\347\254\224\350\256\260/\347\254\224\350\256\2602.md" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\347\254\224\350\256\260/\347\254\224\350\256\2602.md" new file mode 100644 index 0000000000000000000000000000000000000000..c87a4ee720e9a2438fae380eb04b0dca2eea1817 --- /dev/null +++ "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/[RSOC25]-Day2-\350\257\276\347\250\213\347\254\224\350\256\260-\346\235\250\350\222\231\346\201\251/Day2\347\254\224\350\256\260/\347\254\224\350\256\2602.md" @@ -0,0 +1,20 @@ +1. 了解RT-Thread开发环境和基础的内核机 +2. 安装RT-Thread Studio 开发工具 -- [RT-Thread Studio](https://www.rt-thread.com/studio.html) +3. 创建工程 --- f407 +4. QEMU调试 +5. 知识点 + * 4-11是通用寄存器 + * 0-3 是参数传递, 其他寄存器是pc sp psr + * r0~r3 是 “调用者保存寄存器”(Caller - Saved):函数调用时,用于临时传参 / 返回值,被调用函数可直接修改,无需主动保存(调用者(上层函数)不依赖其值持续存在)。 + * r4~r11 是 “被调用者保存寄存器”(Callee - Saved):被调用函数(如线程函数)若使用这些寄存器,必须手动保存 / 恢复(否则会破坏调用者上下文)这是网上的解释 +6. 线程切换 (时间片轮转,优先级强占) + * 二个线程优先级一样,系统调度会安装时间片轮转对若干个线程进行调度 + * 二个线程优先级不一样,系统调度会让排优先级高的优先调度,优先级一样,系统调度会安装时间片轮转对优先级高的进行调度 + * 线程回调函数必须要有延时函数来让出CPU资源,不能一个线程独占CPU资源 + * 线程回调函数不能有死循环,否则线程会一直运行,无法切换 + * 线程回调函数不能有阻塞操作,否则线程会阻塞,无法切换 + + + + + diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\345\274\240\344\270\211/\344\275\234\344\270\232/README.md" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\345\274\240\344\270\211/\344\275\234\344\270\232/README.md" deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\345\274\240\344\270\211/\347\254\224\350\256\260/README.md" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\345\274\240\344\270\211/\347\254\224\350\256\260/README.md" deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\250\350\222\231\346\201\251-\346\217\220\344\272\244\346\265\213\350\257\225/\344\275\234\344\270\232/\347\254\254\344\270\200\345\244\251\344\275\234\344\270\232.md" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\250\350\222\231\346\201\251-\346\217\220\344\272\244\346\265\213\350\257\225/\344\275\234\344\270\232/\347\254\254\344\270\200\345\244\251\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..06fdfdca28648ffe7fd23f2d93bcff998cff1305 --- /dev/null +++ "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\250\350\222\231\346\201\251-\346\217\220\344\272\244\346\265\213\350\257\225/\344\275\234\344\270\232/\347\254\254\344\270\200\345\244\251\344\275\234\344\270\232.md" @@ -0,0 +1,3 @@ +1. 笔记已提交 +2. 论坛已提交 +3. 内容已开源 diff --git "a/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\250\350\222\231\346\201\251-\346\217\220\344\272\244\346\265\213\350\257\225/\347\254\224\350\256\260/\345\206\205\346\240\270\347\254\224\350\256\260.md" "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\250\350\222\231\346\201\251-\346\217\220\344\272\244\346\265\213\350\257\225/\347\254\224\350\256\260/\345\206\205\346\240\270\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..5573d8cdacde7fc0e17b936f4c814292592394b4 --- /dev/null +++ "b/2025/\347\254\2541\347\273\204(STM32H750-ART-PI)/\346\235\250\350\222\231\346\201\251-\346\217\220\344\272\244\346\265\213\350\257\225/\347\254\224\350\256\260/\345\206\205\346\240\270\347\254\224\350\256\260.md" @@ -0,0 +1,32 @@ +* 2025年7月21日 --- RT-Thread训练营笔记 +* 安装Git工具(Git Bash) +* 安装ENV_WINDOW工具, 添加qemu-nographic.bat环境变量 + * 'pkgs --upgrade' 升级软件包 'pkgs --update' 更新软件包 + * +* 下载工程源码 +* 编译程序 + * menuconfig + * scons -j4 + * qemu-nographic.bat +* 使用vscode对源工程进行打开 +* 使用Gitee进行个人SSH密钥配置 + * 复制以下命令到终端执行 git clone + git@gitee.com:rtthread/rsoc-rtt.git + * 确保你提交的代码身份被 Gitee 正确识别 + git config --global user.name '杨蒙恩' + git config --global user.email '16073658+yang-meng- en@user.noreply.gitee.com' + * 生成 RSA 密钥 + ssh-keygen -t rsa + * 获取 RSA 公钥内容,并配置到 SSH公钥 中 + cat ~/.ssh/id_rsa.pub +* Gitee命令 + * 'git push/pull' --- 推送 + * 'git add .' --- 添加所有修改的文件到暂存区 + * 'git commit -m "log"'--- commit,log是commit的标题 + * 'git log' --- 查看修改日志 + * 'git status' --- 查看文件状态 + * 'git checkout -b first_branch' --- 创建一个分支名为first_branch + * 'git switch' --- 切换分支 + * 'git branch' --- 查看分支 + * 'git reset --hard HEAD~' --- 硬重置,把上一个退一个commit + * 'git reset --soft HEAD~' --- 软重置,把上一个commit退回暂存区里 \ No newline at end of file