鏇存柊鏂囨。
This commit is contained in:
68
.obsidian/workspace.json
vendored
68
.obsidian/workspace.json
vendored
@@ -4,21 +4,21 @@
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "c4fd382c8ab59125",
|
||||
"id": "7853d9d78bf8acd8",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "f1ecba89214e3cc5",
|
||||
"id": "dc4c0d0c9987c7cd",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "docs/cursor/cursor.md",
|
||||
"file": "docs/Obsidian笔记体系/Projects/知你-调测/知你--调测.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "cursor"
|
||||
"title": "知你--调测"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -183,43 +183,43 @@
|
||||
"bases:创建新数据库": false
|
||||
}
|
||||
},
|
||||
"active": "5b497a77c6d68c73",
|
||||
"active": "dc4c0d0c9987c7cd",
|
||||
"lastOpenFiles": [
|
||||
"docs/gerrit/gerrit提交代码时遇到钩子问题的解决办法.md",
|
||||
"docs/gerrit/gerrit分支规范.md",
|
||||
"docs/gerrit/gerrit上传代码详细指南.md",
|
||||
"docs/gerrit",
|
||||
"gerrit/gerrit分支规范.md",
|
||||
"gerrit/gerrit上传代码详细指南.md",
|
||||
"docs/学习笔记/gerrit上传代码详细指南.md",
|
||||
"gerrit/gerrit提交代码时遇到钩子问题的解决办法.md",
|
||||
"gerrit",
|
||||
"docs/Obsidian/高频命令.md",
|
||||
"docs/Obsidian/欢迎.md",
|
||||
"docs/Obsidian/2026-01-05 个人文档管理.md",
|
||||
"docs/renjiabo/hello.md",
|
||||
"更新部署脚本/部署脚本使用说明.md",
|
||||
"docs/Obsidian/资源网站.md",
|
||||
"docs/Obsidian/高频命令.md",
|
||||
"docs/cursor/cursor.md",
|
||||
"docs/Obsidian/重要笔记.md",
|
||||
"docs/dify/作为安卓高级开发工程师,除了项目管理,你完全可以在技术专项、团队效能和个人成长三大领域构建更懂你的专属助手.md",
|
||||
"docs/dify/使用dify,可以生成一个专项事务助手吗,比如公司正规化事务助手.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/数据库配置.md",
|
||||
"docs/git/git常用命令.md",
|
||||
"docs/git/hello.md",
|
||||
"docs/学习笔记/前端学习.md",
|
||||
"docs/git/test.md",
|
||||
"docs/学习笔记/效率提升.md",
|
||||
"docs/gerrit/生成并配置SSH密钥、克隆仓库.md",
|
||||
"docs/git/git设置用户名和邮箱.md",
|
||||
"docs/学习笔记/个人全自动研发体系.md",
|
||||
"docs/学习笔记/DevOps学习.md",
|
||||
"docs/git/git同步远程分支总结.md",
|
||||
"docs/Obsidian笔记体系/Projects/知你-调测/知你--调测.md",
|
||||
"docs/学习笔记/honor工作资料.md",
|
||||
"docs/学习笔记/提交代码时候的钩子.md",
|
||||
"docs/Obsidian笔记体系/Projects/知你-调测",
|
||||
"docs/Obsidian笔记体系/Resources/工具/脚本库/README.md",
|
||||
"docs/Obsidian笔记体系/Resources/工具/效率工具推荐/README.md",
|
||||
"docs/Obsidian笔记体系/Resources/会议与分享/内部技术分享记录/代码评审模板示例.md",
|
||||
"docs/Obsidian笔记体系/Daily/2026-01-13.md",
|
||||
"docs/Obsidian笔记体系/Projects/项目A-系统定制化/测试与验证记录.md",
|
||||
"docs/gerrit",
|
||||
"gerrit",
|
||||
"更新部署脚本/deploy.sh",
|
||||
"更新部署脚本/deploy.py",
|
||||
"更新部署脚本/deploy.ps1",
|
||||
"更新部署脚本/deploy_config.json",
|
||||
"更新部署脚本",
|
||||
"新建文件夹",
|
||||
"部署脚本使用说明.md",
|
||||
"deploy.py",
|
||||
"deploy_config.json",
|
||||
"docs/index.md",
|
||||
"文档完善提示词模板.md",
|
||||
"使用说明.md",
|
||||
"test_lifecycle.md",
|
||||
"docs/Obsidian笔记体系/MOCs/源码阅读地图.md",
|
||||
"docs/Obsidian笔记体系/Daily/templates/每日模板.md",
|
||||
"个人笔记体系.md",
|
||||
"docs/Obsidian笔记体系/Archive/资源-历史会议记录/2023年会议记录示例.md",
|
||||
"docs/Obsidian笔记体系/Archive/领域-已废弃API研究/已废弃API-旧版Activity启动方式.md",
|
||||
"docs/Obsidian笔记体系/Archive/项目-旧版ROM适配/项目A-旧版ROM适配-README.md",
|
||||
"docs/Obsidian笔记体系/Archive/领域-已废弃API研究/README.md",
|
||||
"docs/Obsidian笔记体系/Archive/项目-旧版ROM适配/README.md",
|
||||
"docs/Obsidian笔记体系/Archive/资源-历史会议记录/README.md"
|
||||
"deploy.py"
|
||||
]
|
||||
}
|
||||
132
docs/Obsidian笔记体系/Daily/2026-01-13.md
Normal file
132
docs/Obsidian笔记体系/Daily/2026-01-13.md
Normal file
@@ -0,0 +1,132 @@
|
||||
## 基本信息
|
||||
- **日期**: 2026-01-13
|
||||
- **星期**: 星期二
|
||||
- **天气**: 晴
|
||||
- **心情**: 良好
|
||||
|
||||
## 今日计划
|
||||
|
||||
### 工作安排
|
||||
- [ ] 从正式环境切换到开发环境
|
||||
- [ ] 知你--会员功能
|
||||
- [ ] 任务3
|
||||
|
||||
### 学习计划
|
||||
- [ ] 学习内容1
|
||||
- [ ] 学习内容2
|
||||
|
||||
### 其他计划
|
||||
- [ ] 其他事项1
|
||||
|
||||
## 工作记录
|
||||
|
||||
### 已完成
|
||||
- ✅ 从正式环境切换到开发环境
|
||||
- 时间: HH:MM - HH:MM
|
||||
- 内容: http://101.43.95.130:8082/c/zhini_im/+/104
|
||||
- 收获:
|
||||
|
||||
- ✅ 完成事项2
|
||||
- 时间: HH:MM - HH:MM
|
||||
- 内容: 详细描述
|
||||
- 收获:
|
||||
|
||||
### 进行中
|
||||
- 🔄 进行中事项1
|
||||
- 开始时间: HH:MM
|
||||
- 当前进度:
|
||||
- 遇到的问题:
|
||||
- 下一步计划:
|
||||
|
||||
### 待处理
|
||||
- ⏳ 待处理事项1
|
||||
- 计划时间: HH:MM
|
||||
- 优先级: 高/中/低
|
||||
|
||||
## 学习记录
|
||||
|
||||
### 技术学习
|
||||
- **学习内容**:
|
||||
- **学习时间**: HH:MM - HH:MM
|
||||
- **学习方式**: 阅读/实践/视频
|
||||
- **关键收获**:
|
||||
- **相关链接**: [[相关文档]]
|
||||
|
||||
### 源码阅读
|
||||
- **阅读模块**:
|
||||
- **阅读时间**: HH:MM - HH:MM
|
||||
- **关键理解**:
|
||||
- **疑问**:
|
||||
- **相关链接**: [[相关源码]]
|
||||
|
||||
### 问题解决
|
||||
- **问题描述**:
|
||||
- **解决过程**:
|
||||
- **解决方案**:
|
||||
- **经验总结**:
|
||||
- **相关链接**: [[相关文档]]
|
||||
|
||||
## 会议记录
|
||||
|
||||
### 会议1
|
||||
- **时间**: HH:MM - HH:MM
|
||||
- **主题**:
|
||||
- **参与人**:
|
||||
- **关键内容**:
|
||||
- **行动项**:
|
||||
- **相关链接**: [[会议记录]]
|
||||
|
||||
## 思考与总结
|
||||
|
||||
### 今日收获
|
||||
1. 收获1
|
||||
2. 收获2
|
||||
3. 收获3
|
||||
|
||||
### 今日反思
|
||||
- 做得好的地方:
|
||||
- 需要改进的地方:
|
||||
- 改进计划:
|
||||
|
||||
### 明日计划
|
||||
1. 计划1
|
||||
2. 计划2
|
||||
3. 计划3
|
||||
|
||||
## 技术笔记
|
||||
|
||||
### 技术点1
|
||||
- **内容**:
|
||||
- **代码示例**:
|
||||
```java
|
||||
// 代码示例
|
||||
```
|
||||
|
||||
- **关键理解**:
|
||||
- **相关链接**: [[相关文档]]
|
||||
|
||||
### 技术点2
|
||||
- **内容**:
|
||||
- **关键理解**:
|
||||
|
||||
## 问题与疑问
|
||||
|
||||
### 问题1
|
||||
- **问题描述**:
|
||||
- **思考**:
|
||||
- **待解决**:
|
||||
|
||||
### 问题2
|
||||
- **问题描述**:
|
||||
- **思考**:
|
||||
|
||||
## 相关链接
|
||||
|
||||
- [[相关项目]]
|
||||
- [[相关文档]]
|
||||
- [[相关笔记]]
|
||||
|
||||
## 备注
|
||||
|
||||
- 备注1
|
||||
- 备注2
|
||||
@@ -1,60 +1,15 @@
|
||||
gitlab.md.hihonor.com/w00013566/mdmdemo
|
||||
|
||||
# 测试账户
|
||||
18792702169 验证码 1122
|
||||
|
||||
|
||||
1.查看用户 adb shell pm list users
|
||||
2.adb shell getprop ro.product.model如何使用adb命令查看手机版本号
|
||||
3.adb shell getprop ro.soc.model查看手机型号
|
||||
4.fastboot界面查询手机型号 fastboot getvar deicemodel
|
||||
5.fastboot下重启 fastboot reboot
|
||||
android 获取当前页面的 activity adb shell "dumpsys window | grep mCurrentFocus"
|
||||
|
||||
18792702169
|
||||
https://getui.com/notification-push
|
||||
https://www.jiguang.cn/push?source=bdAd&plan=1&unit=480&keyword=24261&bd_vid=6437844800464191042
|
||||
|
||||
# 应用签名
|
||||
C:\Users\86181\AppData\Local\Android\Sdk\build-tools\35.0.0
|
||||
签名会用到下面这个apksigner.bat文件
|
||||
签名: apksigner sign --ks design.jks app-debug.apk
|
||||
检验签名:apksigner verify -v --print-certs app-debug.apk
|
||||
apksigner verify -v --print-certs app-release.apk
|
||||
|
||||
|
||||
https://www.pgyer.com/zhini-android
|
||||
|
||||
|
||||
pmo 开发经理,负责协调交付。
|
||||
规划 对接客户需求
|
||||
se 需求转化为设计方案
|
||||
开发 编码开发
|
||||
测试 编写测试用例,回归验证
|
||||
cmo 编译版本
|
||||
|
||||
一 需求背景
|
||||
二 功能概述
|
||||
三 竞品分析
|
||||
四 设计方案
|
||||
五 工作量评估
|
||||
|
||||
|
||||
|
||||
|
||||
pkill -f "cursor-server"
|
||||
|
||||
|
||||
|
||||
通过网络连接设备(无需USB):
|
||||
adb tcpip 5555 # 将设备切换至TCP/IP模式,在5555端口监听[citation:8][citation:10]
|
||||
adb connect 192.168.1.100:5555 # 在电脑上连接设备IP[citation:8][citation:10]
|
||||
adb connect 192.168.172.236:5555
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
知你的签名信息
|
||||
# 知你的签名信息
|
||||
C:\Users\86181\AppData\Local\Android\Sdk\build-tools\35.0.0>apksigner verify -v --print-certs app-release.apk
|
||||
Verifies
|
||||
Verified using v1 scheme (JAR signing): false
|
||||
@@ -73,6 +28,4 @@ Signer #1 key size (bits): 2048
|
||||
Signer #1 public key SHA-256 digest: e458cad386b422c6941e0420b611257cb0426c82e719095c3dbd9d9ffb7a90dc
|
||||
Signer #1 public key SHA-1 digest: d3c0988b1a336e326683db4a258459031491b46a
|
||||
Signer #1 public key MD5 digest: 8ef05aa185908c1fc19a4bea27427b24
|
||||
C:\Users\86181\AppData\Local\Android\Sdk\build-tools\35.0.0>
|
||||
|
||||
|
||||
C:\Users\86181\AppData\Local\Android\Sdk\build-tools\35.0.0>
|
||||
@@ -1,5 +1,8 @@
|
||||
curse 网站续费 https://cursor.com/cn/dashboard
|
||||
|
||||
pkill -f "cursor-server"
|
||||
|
||||
|
||||
|
||||
联通大王卡号:13022988679
|
||||
公司电信卡号:17392826953 QQ号:3145431252 密码:renjianbo0118 邮箱:3145431252@qq.com 密码:renjianbo0118 网易邮箱17392826953@163.com !renjianbo1219
|
||||
|
||||
@@ -1,133 +1,133 @@
|
||||
你的操作指南非常详细和准确!我帮你重新整理了一个更清晰的流程,并修复了流程图的语法:
|
||||
|
||||
## 完整操作流程
|
||||
|
||||
### **第一步:生成SSH密钥(在新电脑上)**
|
||||
|
||||
```bash
|
||||
# 1. 生成SSH密钥(使用ed25519算法,更安全)
|
||||
ssh-keygen -t ed25519 -C "renjianbo@example.com"
|
||||
|
||||
# 按提示操作:
|
||||
# - 直接回车使用默认路径 (~/.ssh/id_ed25519)
|
||||
# - 可以设置密码(可选)
|
||||
# - 再次确认密码
|
||||
|
||||
# 2. 查看公钥并复制
|
||||
cat ~/.ssh/id_ed25519.pub
|
||||
```
|
||||
**输出示例:**
|
||||
```
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJL...你的公钥内容... renjianbo@example.com
|
||||
```
|
||||
|
||||
### **第二步:添加公钥到Gerrit账户**
|
||||
|
||||
1. 登录 Gerrit:`http://101.43.95.130:8080/`
|
||||
2. 点击右上角 **renjianbo** → **Settings** → **SSH Keys**
|
||||
3. 点击 **Add Key** 按钮
|
||||
4. 粘贴复制的公钥内容,保存
|
||||
|
||||
### **第三步:克隆项目**
|
||||
|
||||
#### **方式A:SSH协议(推荐)**
|
||||
```bash
|
||||
# 使用你的用户名 renjianbo
|
||||
git clone ssh://renjianbo@101.43.95.130:29418/zhini_im
|
||||
```
|
||||
|
||||
#### **方式B:HTTP协议(备用)**
|
||||
```bash
|
||||
git clone http://101.43.95.130:8080/zhini_im
|
||||
# 可能需要输入用户名密码
|
||||
```
|
||||
|
||||
### **第四步:验证和配置**
|
||||
|
||||
```bash
|
||||
# 1. 进入项目目录
|
||||
cd zhini_im
|
||||
|
||||
# 2. 查看远程仓库地址
|
||||
git remote -v
|
||||
# 应该显示类似:origin ssh://renjianbo@101.43.95.130:29418/zhini_im
|
||||
|
||||
# 3. 配置用户信息(重要!)
|
||||
git config user.name "renjianbo"
|
||||
git config user.email "renjianbo@example.com" # 使用你的Gerrit注册邮箱
|
||||
|
||||
# 4. 可选:验证SSH连接
|
||||
ssh -p 29418 renjianbo@101.43.95.130
|
||||
# 如果看到 Gerrit 欢迎信息,说明连接成功
|
||||
```
|
||||
|
||||
## **操作流程图**
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start[开始] --> GenKey[生成SSH密钥<br>ssh-keygen]
|
||||
GenKey --> CopyKey[复制公钥<br>cat ~/.ssh/id_ed25519.pub]
|
||||
CopyKey --> LoginGerrit[登录Gerrit网页]
|
||||
LoginGerrit --> AddKey[添加公钥到SSH Keys]
|
||||
|
||||
AddKey --> ChooseMethod{选择克隆方式}
|
||||
ChooseMethod --> SSH[SSH协议<br>git clone ssh://renjianbo@...]
|
||||
ChooseMethod --> HTTP[HTTP协议<br>git clone http://...]
|
||||
|
||||
SSH --> Verify[进入目录验证]
|
||||
HTTP --> Verify
|
||||
Verify --> Config[配置用户信息]
|
||||
Config --> Done[完成]
|
||||
```
|
||||
|
||||
## **常见问题解决**
|
||||
|
||||
### **1. SSH连接被拒绝**
|
||||
```bash
|
||||
# 测试SSH连接
|
||||
ssh -p 29418 -T renjianbo@101.43.95.130
|
||||
|
||||
# 如果提示"Permission denied",检查:
|
||||
# - 公钥是否正确添加到Gerrit
|
||||
# - 用户名是否正确(不是admin,是renjianbo)
|
||||
# - 是否有仓库访问权限
|
||||
```
|
||||
|
||||
### **2. 首次连接需要确认主机**
|
||||
```
|
||||
The authenticity of host '[101.43.95.130]:29418' can't be established.
|
||||
ECDSA key fingerprint is SHA256:xxx...
|
||||
Are you sure you want to continue connecting (yes/no/[fingerprint])?
|
||||
```
|
||||
**输入:** `yes`
|
||||
|
||||
### **3. 端口被阻挡**
|
||||
- 检查防火墙是否允许29418端口
|
||||
- 在公司网络可能需要配置代理
|
||||
|
||||
### **4. 克隆速度慢**
|
||||
```bash
|
||||
# 可以尝试浅克隆(只获取最新版本)
|
||||
git clone --depth 1 ssh://renjianbo@101.43.95.130:29418/zhini_im
|
||||
```
|
||||
|
||||
## **快捷脚本**
|
||||
创建一键克隆脚本 `clone_zhini_im.sh`:
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# 克隆智拟IM项目
|
||||
echo "正在克隆智拟IM项目..."
|
||||
git clone ssh://renjianbo@101.43.95.130:29418/zhini_im
|
||||
cd zhini_im
|
||||
git config user.name "renjianbo"
|
||||
git config user.email "renjianbo@example.com"
|
||||
echo "克隆完成!"
|
||||
```
|
||||
|
||||
执行:
|
||||
```bash
|
||||
chmod +x clone_zhini_im.sh
|
||||
./clone_zhini_im.sh
|
||||
```
|
||||
|
||||
你的操作指南非常详细和准确!我帮你重新整理了一个更清晰的流程,并修复了流程图的语法:
|
||||
|
||||
## 完整操作流程
|
||||
|
||||
### **第一步:生成SSH密钥(在新电脑上)**
|
||||
|
||||
```bash
|
||||
# 1. 生成SSH密钥(使用ed25519算法,更安全)
|
||||
ssh-keygen -t ed25519 -C "renjianbo@example.com"
|
||||
|
||||
# 按提示操作:
|
||||
# - 直接回车使用默认路径 (~/.ssh/id_ed25519)
|
||||
# - 可以设置密码(可选)
|
||||
# - 再次确认密码
|
||||
|
||||
# 2. 查看公钥并复制
|
||||
cat ~/.ssh/id_ed25519.pub
|
||||
```
|
||||
**输出示例:**
|
||||
```
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJL...你的公钥内容... renjianbo@example.com
|
||||
```
|
||||
|
||||
### **第二步:添加公钥到Gerrit账户**
|
||||
|
||||
1. 登录 Gerrit:`http://101.43.95.130:8080/`
|
||||
2. 点击右上角 **renjianbo** → **Settings** → **SSH Keys**
|
||||
3. 点击 **Add Key** 按钮
|
||||
4. 粘贴复制的公钥内容,保存
|
||||
|
||||
### **第三步:克隆项目**
|
||||
|
||||
#### **方式A:SSH协议(推荐)**
|
||||
```bash
|
||||
# 使用你的用户名 renjianbo
|
||||
git clone ssh://renjianbo@101.43.95.130:29418/zhini_im
|
||||
```
|
||||
|
||||
#### **方式B:HTTP协议(备用)**
|
||||
```bash
|
||||
git clone http://101.43.95.130:8080/zhini_im
|
||||
# 可能需要输入用户名密码
|
||||
```
|
||||
|
||||
### **第四步:验证和配置**
|
||||
|
||||
```bash
|
||||
# 1. 进入项目目录
|
||||
cd zhini_im
|
||||
|
||||
# 2. 查看远程仓库地址
|
||||
git remote -v
|
||||
# 应该显示类似:origin ssh://renjianbo@101.43.95.130:29418/zhini_im
|
||||
|
||||
# 3. 配置用户信息(重要!)
|
||||
git config user.name "renjianbo"
|
||||
git config user.email "renjianbo@example.com" # 使用你的Gerrit注册邮箱
|
||||
|
||||
# 4. 可选:验证SSH连接
|
||||
ssh -p 29418 renjianbo@101.43.95.130
|
||||
# 如果看到 Gerrit 欢迎信息,说明连接成功
|
||||
```
|
||||
|
||||
## **操作流程图**
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start[开始] --> GenKey[生成SSH密钥<br>ssh-keygen]
|
||||
GenKey --> CopyKey[复制公钥<br>cat ~/.ssh/id_ed25519.pub]
|
||||
CopyKey --> LoginGerrit[登录Gerrit网页]
|
||||
LoginGerrit --> AddKey[添加公钥到SSH Keys]
|
||||
|
||||
AddKey --> ChooseMethod{选择克隆方式}
|
||||
ChooseMethod --> SSH[SSH协议<br>git clone ssh://renjianbo@...]
|
||||
ChooseMethod --> HTTP[HTTP协议<br>git clone http://...]
|
||||
|
||||
SSH --> Verify[进入目录验证]
|
||||
HTTP --> Verify
|
||||
Verify --> Config[配置用户信息]
|
||||
Config --> Done[完成]
|
||||
```
|
||||
|
||||
## **常见问题解决**
|
||||
|
||||
### **1. SSH连接被拒绝**
|
||||
```bash
|
||||
# 测试SSH连接
|
||||
ssh -p 29418 -T renjianbo@101.43.95.130
|
||||
|
||||
# 如果提示"Permission denied",检查:
|
||||
# - 公钥是否正确添加到Gerrit
|
||||
# - 用户名是否正确(不是admin,是renjianbo)
|
||||
# - 是否有仓库访问权限
|
||||
```
|
||||
|
||||
### **2. 首次连接需要确认主机**
|
||||
```
|
||||
The authenticity of host '[101.43.95.130]:29418' can't be established.
|
||||
ECDSA key fingerprint is SHA256:xxx...
|
||||
Are you sure you want to continue connecting (yes/no/[fingerprint])?
|
||||
```
|
||||
**输入:** `yes`
|
||||
|
||||
### **3. 端口被阻挡**
|
||||
- 检查防火墙是否允许29418端口
|
||||
- 在公司网络可能需要配置代理
|
||||
|
||||
### **4. 克隆速度慢**
|
||||
```bash
|
||||
# 可以尝试浅克隆(只获取最新版本)
|
||||
git clone --depth 1 ssh://renjianbo@101.43.95.130:29418/zhini_im
|
||||
```
|
||||
|
||||
## **快捷脚本**
|
||||
创建一键克隆脚本 `clone_zhini_im.sh`:
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# 克隆智拟IM项目
|
||||
echo "正在克隆智拟IM项目..."
|
||||
git clone ssh://renjianbo@101.43.95.130:29418/zhini_im
|
||||
cd zhini_im
|
||||
git config user.name "renjianbo"
|
||||
git config user.email "renjianbo@example.com"
|
||||
echo "克隆完成!"
|
||||
```
|
||||
|
||||
执行:
|
||||
```bash
|
||||
chmod +x clone_zhini_im.sh
|
||||
./clone_zhini_im.sh
|
||||
```
|
||||
|
||||
按照这个流程操作,你应该能成功将项目拉到新电脑。如果遇到具体错误,可以把错误信息发给我,我会帮你诊断解决。
|
||||
@@ -1,276 +1,276 @@
|
||||
非常全面的同步远程分支指南!我来帮你整理几个最实用的方案,并提供更清晰的分类:
|
||||
|
||||
## 📋 **最常用的分支同步方案**
|
||||
|
||||
### **方案一:基础同步(最常用)**
|
||||
```bash
|
||||
# 1. 获取所有远程更新并清理已删除分支
|
||||
git fetch --all --prune
|
||||
|
||||
# 2. 查看所有分支
|
||||
git branch -a
|
||||
|
||||
# 3. 切换到特定分支并同步
|
||||
git checkout 分支名
|
||||
git pull origin 分支名
|
||||
```
|
||||
|
||||
### **方案二:一键同步所有分支到本地**
|
||||
```bash
|
||||
# 推荐的安全版本
|
||||
git fetch --all --prune
|
||||
for branch in $(git branch -r | grep -v '\->' | grep -v 'HEAD'); do
|
||||
local_branch=${branch#origin/}
|
||||
if ! git show-ref --quiet refs/heads/"$local_branch"; then
|
||||
echo "📦 创建分支: $local_branch"
|
||||
git branch --track "$local_branch" "$branch"
|
||||
fi
|
||||
done
|
||||
```
|
||||
|
||||
## 🔧 **实用脚本整理**
|
||||
|
||||
### **脚本1:智能同步脚本 (sync-branches.sh)**
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# 智能同步所有远程分支
|
||||
|
||||
echo "🔄 开始同步分支..."
|
||||
|
||||
# 1. 获取所有远程更新
|
||||
git fetch --all --prune
|
||||
|
||||
# 2. 同步主要分支
|
||||
main_branch=""
|
||||
if git show-ref --verify --quiet refs/remotes/origin/main; then
|
||||
main_branch="main"
|
||||
elif git show-ref --verify --quiet refs/remotes/origin/master; then
|
||||
main_branch="master"
|
||||
fi
|
||||
|
||||
if [ -n "$main_branch" ]; then
|
||||
echo "📌 更新主分支: $main_branch"
|
||||
git checkout $main_branch 2>/dev/null || git checkout -b $main_branch origin/$main_branch
|
||||
git pull origin $main_branch
|
||||
fi
|
||||
|
||||
# 3. 创建本地不存在的远程分支
|
||||
echo "📦 同步其他分支..."
|
||||
git branch -r | grep -v '\->' | grep -v 'HEAD' | while read remote; do
|
||||
local_branch=${remote#origin/}
|
||||
|
||||
# 跳过已经存在的分支
|
||||
if git show-ref --verify --quiet refs/heads/"$local_branch"; then
|
||||
echo " ✓ 已存在: $local_branch"
|
||||
continue
|
||||
fi
|
||||
|
||||
# 创建跟踪分支
|
||||
echo " ➕ 创建: $local_branch"
|
||||
git branch --track "$local_branch" "$remote" 2>/dev/null
|
||||
done
|
||||
|
||||
# 4. 检查是否需要更新现有分支
|
||||
echo "🔄 检查本地分支更新..."
|
||||
current_branch=$(git branch --show-current)
|
||||
git branch --format='%(refname:short)' | while read branch; do
|
||||
if [ "$branch" != "$current_branch" ]; then
|
||||
git checkout "$branch" >/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
git pull origin "$branch" --ff-only >/dev/null 2>&1
|
||||
echo " ⬆️ 已更新: $branch"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# 5. 返回原分支
|
||||
git checkout "$current_branch" >/dev/null 2>&1
|
||||
|
||||
echo "✅ 同步完成!"
|
||||
echo "📊 分支统计:"
|
||||
git branch -a | grep -c "remotes/origin" | xargs echo "远程分支数: "
|
||||
git branch | wc -l | xargs echo "本地分支数: "
|
||||
```
|
||||
|
||||
### **脚本2:快速切换和同步 (git-sync)**
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# 快速切换到指定分支并同步
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "用法: git-sync 分支名"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BRANCH=$1
|
||||
|
||||
echo "🔄 切换到分支: $BRANCH"
|
||||
|
||||
# 检查分支是否存在
|
||||
if git show-ref --verify --quiet refs/heads/"$BRANCH"; then
|
||||
# 本地分支存在
|
||||
git checkout "$BRANCH"
|
||||
git pull origin "$BRANCH"
|
||||
elif git show-ref --verify --quiet refs/remotes/origin/"$BRANCH"; then
|
||||
# 远程分支存在,创建本地跟踪分支
|
||||
git checkout -b "$BRANCH" origin/"$BRANCH"
|
||||
else
|
||||
echo "❌ 错误: 分支 $BRANCH 不存在"
|
||||
echo "可用的远程分支:"
|
||||
git branch -r | grep -v '\->' | sed 's/origin\///' | sort | uniq
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ 完成!当前分支: $(git branch --show-current)"
|
||||
```
|
||||
|
||||
## ⚙️ **Git 配置别名(推荐)**
|
||||
|
||||
添加到 `~/.gitconfig` 的 `[alias]` 部分:
|
||||
|
||||
```ini
|
||||
[alias]
|
||||
# 同步所有分支
|
||||
sync-all = "!f() { \
|
||||
echo '🔄 获取远程更新...'; \
|
||||
git fetch --all --prune; \
|
||||
echo '📦 创建本地分支...'; \
|
||||
git branch -r | grep -v '\\->' | grep -v 'HEAD' | while read remote; do \
|
||||
local=${remote#origin/}; \
|
||||
if ! git show-ref --quiet refs/heads/\"$local\"; then \
|
||||
echo \" ➕ $local\"; \
|
||||
git branch --track \"$local\" \"$remote\" 2>/dev/null; \
|
||||
fi; \
|
||||
done; \
|
||||
echo '✅ 同步完成!'; \
|
||||
}; f"
|
||||
|
||||
# 更新当前仓库所有分支
|
||||
update-all = "!f() { \
|
||||
current=$(git branch --show-current); \
|
||||
for branch in $(git branch --format='%(refname:short)'); do \
|
||||
if [ \"$branch\" != \"$current\" ]; then \
|
||||
git checkout \"$branch\" 2>/dev/null && git pull origin \"$branch\" 2>/dev/null; \
|
||||
fi; \
|
||||
done; \
|
||||
git checkout \"$current\"; \
|
||||
echo '✅ 所有分支已更新!'; \
|
||||
}; f"
|
||||
|
||||
# 查看分支树状图
|
||||
tree = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
|
||||
|
||||
# 清理已合并的分支
|
||||
clean-branches = "!f() { \
|
||||
git fetch --all --prune; \
|
||||
git branch --merged main | grep -v '^\\* main$' | xargs -n 1 git branch -d; \
|
||||
echo '🧹 已清理合并到main的分支'; \
|
||||
}; f"
|
||||
```
|
||||
|
||||
使用别名:
|
||||
```bash
|
||||
git sync-all # 同步所有远程分支到本地
|
||||
git update-all # 更新所有本地分支
|
||||
git tree # 查看分支树状图
|
||||
git clean-branches # 清理已合并的分支
|
||||
```
|
||||
|
||||
## 🎯 **针对不同场景的推荐方案**
|
||||
|
||||
### **场景1:新电脑初次同步**
|
||||
```bash
|
||||
# 1. 克隆仓库
|
||||
git clone ssh://renjianbo@101.43.95.130:29418/zhini_im
|
||||
|
||||
# 2. 进入目录并同步所有分支
|
||||
cd zhini_im
|
||||
git sync-all # 使用上面配置的别名
|
||||
```
|
||||
|
||||
### **场景2:日常更新**
|
||||
```bash
|
||||
# 推荐的工作流程
|
||||
git status # 1. 查看状态
|
||||
git stash # 2. 暂存未提交的修改(可选)
|
||||
git fetch --all --prune # 3. 获取最新状态
|
||||
git checkout main # 4. 切换到主分支
|
||||
git pull --rebase origin main # 5. 更新主分支
|
||||
git checkout 你的分支 # 6. 切回你的分支
|
||||
git rebase main # 7. 基于最新main重定基
|
||||
git stash pop # 8. 恢复暂存的修改
|
||||
```
|
||||
|
||||
### **场景3:清理分支**
|
||||
```bash
|
||||
# 查看哪些分支已经合并到main
|
||||
git branch --merged main
|
||||
|
||||
# 删除已合并的分支(除了当前分支和main)
|
||||
git branch --merged main | grep -v "main" | xargs git branch -d
|
||||
|
||||
# 强制删除未合并的分支
|
||||
git branch -D 分支名
|
||||
|
||||
# 删除远程分支(谨慎操作)
|
||||
git push origin --delete 分支名
|
||||
```
|
||||
|
||||
## 📊 **分支管理最佳实践**
|
||||
|
||||
### **分支命名规范**
|
||||
```
|
||||
feature/ # 新功能
|
||||
bugfix/ # 修复bug
|
||||
hotfix/ # 紧急修复
|
||||
release/ # 发布分支
|
||||
```
|
||||
|
||||
### **常用命令速查**
|
||||
```bash
|
||||
# 查看分支关系
|
||||
git log --graph --oneline --all
|
||||
|
||||
# 查看远程分支的最后提交
|
||||
git for-each-ref --sort=-committerdate refs/remotes/origin/ --format='%(refname:short) - %(committerdate:short)'
|
||||
|
||||
# 查看分支差异
|
||||
git diff main..你的分支 # 比较差异
|
||||
git log main..你的分支 # 查看提交记录差异
|
||||
|
||||
# 重命名分支
|
||||
git branch -m 旧名字 新名字 # 本地重命名
|
||||
git push origin :旧名字 # 删除远程旧分支
|
||||
git push origin 新名字 # 推送新分支
|
||||
git push origin -u 新名字 # 设置上游分支
|
||||
```
|
||||
|
||||
## 🚨 **注意事项**
|
||||
|
||||
1. **备份重要修改**:同步前先提交或暂存工作
|
||||
2. **小心 force push**:避免使用 `--force`,用 `--force-with-lease` 更安全
|
||||
3. **定期清理**:删除已合并的本地分支,保持仓库整洁
|
||||
4. **沟通协调**:多人协作时,删除远程分支前要确认
|
||||
|
||||
## 🎪 **一个命令完成所有同步**
|
||||
|
||||
终极简化版:
|
||||
```bash
|
||||
# 创建 ~/bin/git-full-sync 文件
|
||||
#!/bin/bash
|
||||
cd /path/to/your/project
|
||||
git stash
|
||||
git fetch --all --prune
|
||||
git checkout main && git pull origin main
|
||||
git sync-all # 使用别名
|
||||
git stash pop
|
||||
echo "✅ 全量同步完成!"
|
||||
|
||||
# 添加执行权限
|
||||
chmod +x ~/bin/git-full-sync
|
||||
|
||||
# 使用
|
||||
cd 你的项目
|
||||
git-full-sync
|
||||
```
|
||||
|
||||
非常全面的同步远程分支指南!我来帮你整理几个最实用的方案,并提供更清晰的分类:
|
||||
|
||||
## 📋 **最常用的分支同步方案**
|
||||
|
||||
### **方案一:基础同步(最常用)**
|
||||
```bash
|
||||
# 1. 获取所有远程更新并清理已删除分支
|
||||
git fetch --all --prune
|
||||
|
||||
# 2. 查看所有分支
|
||||
git branch -a
|
||||
|
||||
# 3. 切换到特定分支并同步
|
||||
git checkout 分支名
|
||||
git pull origin 分支名
|
||||
```
|
||||
|
||||
### **方案二:一键同步所有分支到本地**
|
||||
```bash
|
||||
# 推荐的安全版本
|
||||
git fetch --all --prune
|
||||
for branch in $(git branch -r | grep -v '\->' | grep -v 'HEAD'); do
|
||||
local_branch=${branch#origin/}
|
||||
if ! git show-ref --quiet refs/heads/"$local_branch"; then
|
||||
echo "📦 创建分支: $local_branch"
|
||||
git branch --track "$local_branch" "$branch"
|
||||
fi
|
||||
done
|
||||
```
|
||||
|
||||
## 🔧 **实用脚本整理**
|
||||
|
||||
### **脚本1:智能同步脚本 (sync-branches.sh)**
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# 智能同步所有远程分支
|
||||
|
||||
echo "🔄 开始同步分支..."
|
||||
|
||||
# 1. 获取所有远程更新
|
||||
git fetch --all --prune
|
||||
|
||||
# 2. 同步主要分支
|
||||
main_branch=""
|
||||
if git show-ref --verify --quiet refs/remotes/origin/main; then
|
||||
main_branch="main"
|
||||
elif git show-ref --verify --quiet refs/remotes/origin/master; then
|
||||
main_branch="master"
|
||||
fi
|
||||
|
||||
if [ -n "$main_branch" ]; then
|
||||
echo "📌 更新主分支: $main_branch"
|
||||
git checkout $main_branch 2>/dev/null || git checkout -b $main_branch origin/$main_branch
|
||||
git pull origin $main_branch
|
||||
fi
|
||||
|
||||
# 3. 创建本地不存在的远程分支
|
||||
echo "📦 同步其他分支..."
|
||||
git branch -r | grep -v '\->' | grep -v 'HEAD' | while read remote; do
|
||||
local_branch=${remote#origin/}
|
||||
|
||||
# 跳过已经存在的分支
|
||||
if git show-ref --verify --quiet refs/heads/"$local_branch"; then
|
||||
echo " ✓ 已存在: $local_branch"
|
||||
continue
|
||||
fi
|
||||
|
||||
# 创建跟踪分支
|
||||
echo " ➕ 创建: $local_branch"
|
||||
git branch --track "$local_branch" "$remote" 2>/dev/null
|
||||
done
|
||||
|
||||
# 4. 检查是否需要更新现有分支
|
||||
echo "🔄 检查本地分支更新..."
|
||||
current_branch=$(git branch --show-current)
|
||||
git branch --format='%(refname:short)' | while read branch; do
|
||||
if [ "$branch" != "$current_branch" ]; then
|
||||
git checkout "$branch" >/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
git pull origin "$branch" --ff-only >/dev/null 2>&1
|
||||
echo " ⬆️ 已更新: $branch"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# 5. 返回原分支
|
||||
git checkout "$current_branch" >/dev/null 2>&1
|
||||
|
||||
echo "✅ 同步完成!"
|
||||
echo "📊 分支统计:"
|
||||
git branch -a | grep -c "remotes/origin" | xargs echo "远程分支数: "
|
||||
git branch | wc -l | xargs echo "本地分支数: "
|
||||
```
|
||||
|
||||
### **脚本2:快速切换和同步 (git-sync)**
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# 快速切换到指定分支并同步
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "用法: git-sync 分支名"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BRANCH=$1
|
||||
|
||||
echo "🔄 切换到分支: $BRANCH"
|
||||
|
||||
# 检查分支是否存在
|
||||
if git show-ref --verify --quiet refs/heads/"$BRANCH"; then
|
||||
# 本地分支存在
|
||||
git checkout "$BRANCH"
|
||||
git pull origin "$BRANCH"
|
||||
elif git show-ref --verify --quiet refs/remotes/origin/"$BRANCH"; then
|
||||
# 远程分支存在,创建本地跟踪分支
|
||||
git checkout -b "$BRANCH" origin/"$BRANCH"
|
||||
else
|
||||
echo "❌ 错误: 分支 $BRANCH 不存在"
|
||||
echo "可用的远程分支:"
|
||||
git branch -r | grep -v '\->' | sed 's/origin\///' | sort | uniq
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ 完成!当前分支: $(git branch --show-current)"
|
||||
```
|
||||
|
||||
## ⚙️ **Git 配置别名(推荐)**
|
||||
|
||||
添加到 `~/.gitconfig` 的 `[alias]` 部分:
|
||||
|
||||
```ini
|
||||
[alias]
|
||||
# 同步所有分支
|
||||
sync-all = "!f() { \
|
||||
echo '🔄 获取远程更新...'; \
|
||||
git fetch --all --prune; \
|
||||
echo '📦 创建本地分支...'; \
|
||||
git branch -r | grep -v '\\->' | grep -v 'HEAD' | while read remote; do \
|
||||
local=${remote#origin/}; \
|
||||
if ! git show-ref --quiet refs/heads/\"$local\"; then \
|
||||
echo \" ➕ $local\"; \
|
||||
git branch --track \"$local\" \"$remote\" 2>/dev/null; \
|
||||
fi; \
|
||||
done; \
|
||||
echo '✅ 同步完成!'; \
|
||||
}; f"
|
||||
|
||||
# 更新当前仓库所有分支
|
||||
update-all = "!f() { \
|
||||
current=$(git branch --show-current); \
|
||||
for branch in $(git branch --format='%(refname:short)'); do \
|
||||
if [ \"$branch\" != \"$current\" ]; then \
|
||||
git checkout \"$branch\" 2>/dev/null && git pull origin \"$branch\" 2>/dev/null; \
|
||||
fi; \
|
||||
done; \
|
||||
git checkout \"$current\"; \
|
||||
echo '✅ 所有分支已更新!'; \
|
||||
}; f"
|
||||
|
||||
# 查看分支树状图
|
||||
tree = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
|
||||
|
||||
# 清理已合并的分支
|
||||
clean-branches = "!f() { \
|
||||
git fetch --all --prune; \
|
||||
git branch --merged main | grep -v '^\\* main$' | xargs -n 1 git branch -d; \
|
||||
echo '🧹 已清理合并到main的分支'; \
|
||||
}; f"
|
||||
```
|
||||
|
||||
使用别名:
|
||||
```bash
|
||||
git sync-all # 同步所有远程分支到本地
|
||||
git update-all # 更新所有本地分支
|
||||
git tree # 查看分支树状图
|
||||
git clean-branches # 清理已合并的分支
|
||||
```
|
||||
|
||||
## 🎯 **针对不同场景的推荐方案**
|
||||
|
||||
### **场景1:新电脑初次同步**
|
||||
```bash
|
||||
# 1. 克隆仓库
|
||||
git clone ssh://renjianbo@101.43.95.130:29418/zhini_im
|
||||
|
||||
# 2. 进入目录并同步所有分支
|
||||
cd zhini_im
|
||||
git sync-all # 使用上面配置的别名
|
||||
```
|
||||
|
||||
### **场景2:日常更新**
|
||||
```bash
|
||||
# 推荐的工作流程
|
||||
git status # 1. 查看状态
|
||||
git stash # 2. 暂存未提交的修改(可选)
|
||||
git fetch --all --prune # 3. 获取最新状态
|
||||
git checkout main # 4. 切换到主分支
|
||||
git pull --rebase origin main # 5. 更新主分支
|
||||
git checkout 你的分支 # 6. 切回你的分支
|
||||
git rebase main # 7. 基于最新main重定基
|
||||
git stash pop # 8. 恢复暂存的修改
|
||||
```
|
||||
|
||||
### **场景3:清理分支**
|
||||
```bash
|
||||
# 查看哪些分支已经合并到main
|
||||
git branch --merged main
|
||||
|
||||
# 删除已合并的分支(除了当前分支和main)
|
||||
git branch --merged main | grep -v "main" | xargs git branch -d
|
||||
|
||||
# 强制删除未合并的分支
|
||||
git branch -D 分支名
|
||||
|
||||
# 删除远程分支(谨慎操作)
|
||||
git push origin --delete 分支名
|
||||
```
|
||||
|
||||
## 📊 **分支管理最佳实践**
|
||||
|
||||
### **分支命名规范**
|
||||
```
|
||||
feature/ # 新功能
|
||||
bugfix/ # 修复bug
|
||||
hotfix/ # 紧急修复
|
||||
release/ # 发布分支
|
||||
```
|
||||
|
||||
### **常用命令速查**
|
||||
```bash
|
||||
# 查看分支关系
|
||||
git log --graph --oneline --all
|
||||
|
||||
# 查看远程分支的最后提交
|
||||
git for-each-ref --sort=-committerdate refs/remotes/origin/ --format='%(refname:short) - %(committerdate:short)'
|
||||
|
||||
# 查看分支差异
|
||||
git diff main..你的分支 # 比较差异
|
||||
git log main..你的分支 # 查看提交记录差异
|
||||
|
||||
# 重命名分支
|
||||
git branch -m 旧名字 新名字 # 本地重命名
|
||||
git push origin :旧名字 # 删除远程旧分支
|
||||
git push origin 新名字 # 推送新分支
|
||||
git push origin -u 新名字 # 设置上游分支
|
||||
```
|
||||
|
||||
## 🚨 **注意事项**
|
||||
|
||||
1. **备份重要修改**:同步前先提交或暂存工作
|
||||
2. **小心 force push**:避免使用 `--force`,用 `--force-with-lease` 更安全
|
||||
3. **定期清理**:删除已合并的本地分支,保持仓库整洁
|
||||
4. **沟通协调**:多人协作时,删除远程分支前要确认
|
||||
|
||||
## 🎪 **一个命令完成所有同步**
|
||||
|
||||
终极简化版:
|
||||
```bash
|
||||
# 创建 ~/bin/git-full-sync 文件
|
||||
#!/bin/bash
|
||||
cd /path/to/your/project
|
||||
git stash
|
||||
git fetch --all --prune
|
||||
git checkout main && git pull origin main
|
||||
git sync-all # 使用别名
|
||||
git stash pop
|
||||
echo "✅ 全量同步完成!"
|
||||
|
||||
# 添加执行权限
|
||||
chmod +x ~/bin/git-full-sync
|
||||
|
||||
# 使用
|
||||
cd 你的项目
|
||||
git-full-sync
|
||||
```
|
||||
|
||||
这些方案覆盖了大部分使用场景,根据你的具体需求选择合适的方法即可。最常用的是方案一的基础同步,配合别名可以极大提高效率。
|
||||
@@ -1,18 +1,18 @@
|
||||
配置用户名和邮箱(如果还没配置)
|
||||
git config --global user.name "Your Name" git config --global user.email "your.email@example.com"
|
||||
|
||||
查看用户名
|
||||
git config user.name
|
||||
|
||||
查看邮箱
|
||||
git config user.email
|
||||
|
||||
查看远程仓库地址
|
||||
git config remote.origin.url
|
||||
|
||||
设置远程仓库地址
|
||||
git remote set-url origin ssh://renjianbo@101.43.95.130:29419/zhini_im_android
|
||||
|
||||
|
||||
git remote set-url origin ssh://renjianbo@101.43.95.130:29419/zhini_im_android
|
||||
配置用户名和邮箱(如果还没配置)
|
||||
git config --global user.name "Your Name" git config --global user.email "your.email@example.com"
|
||||
|
||||
查看用户名
|
||||
git config user.name
|
||||
|
||||
查看邮箱
|
||||
git config user.email
|
||||
|
||||
查看远程仓库地址
|
||||
git config remote.origin.url
|
||||
|
||||
设置远程仓库地址
|
||||
git remote set-url origin ssh://renjianbo@101.43.95.130:29419/zhini_im_android
|
||||
|
||||
|
||||
git remote set-url origin ssh://renjianbo@101.43.95.130:29419/zhini_im_android
|
||||
git remote set-url origin http://101.43.95.130:3001/admin/fuzhu.git
|
||||
@@ -1 +0,0 @@
|
||||
hello
|
||||
@@ -1,68 +1,68 @@
|
||||
# DevOps 学习笔记
|
||||
|
||||
## 概念
|
||||
|
||||
### CI/CD
|
||||
|
||||
- **CI (Continuous Integration)**: 持续集成
|
||||
- 自动构建
|
||||
- 自动测试
|
||||
- 代码质量检查
|
||||
|
||||
- **CD (Continuous Deployment)**: 持续部署
|
||||
- 自动部署
|
||||
- 环境管理
|
||||
- 回滚机制
|
||||
|
||||
## 工具链
|
||||
|
||||
### 版本控制
|
||||
|
||||
- **Git**: 分布式版本控制系统
|
||||
- **Gerrit**: 代码审查工具
|
||||
- **Gitea**: Git 服务
|
||||
|
||||
### CI/CD
|
||||
|
||||
- **Drone**: 基于容器的 CI/CD 平台
|
||||
- **Jenkins**: 流行的 CI/CD 工具
|
||||
- **GitLab CI**: GitLab 内置 CI/CD
|
||||
|
||||
### 容器化
|
||||
|
||||
- **Docker**: 容器化平台
|
||||
- **Docker Compose**: 多容器编排
|
||||
- **Kubernetes**: 容器编排平台
|
||||
|
||||
### 监控和日志
|
||||
|
||||
- **Grafana**: 监控可视化
|
||||
- **Loki**: 日志聚合
|
||||
- **Prometheus**: 监控和告警
|
||||
|
||||
## 最佳实践
|
||||
|
||||
### 代码管理
|
||||
|
||||
1. 使用分支策略(Git Flow)
|
||||
2. 代码审查(Code Review)
|
||||
3. 提交信息规范(Conventional Commits)
|
||||
|
||||
### 自动化
|
||||
|
||||
1. 自动化测试
|
||||
2. 自动化构建
|
||||
3. 自动化部署
|
||||
|
||||
### 监控
|
||||
|
||||
1. 应用监控
|
||||
2. 日志收集
|
||||
3. 告警机制
|
||||
|
||||
## 学习资源
|
||||
|
||||
- [DevOps 实践指南](https://www.devops-handbook.com/)
|
||||
- [Docker 官方文档](https://docs.docker.com/)
|
||||
- [Kubernetes 官方文档](https://kubernetes.io/docs/)
|
||||
|
||||
# DevOps 学习笔记
|
||||
|
||||
## 概念
|
||||
|
||||
### CI/CD
|
||||
|
||||
- **CI (Continuous Integration)**: 持续集成
|
||||
- 自动构建
|
||||
- 自动测试
|
||||
- 代码质量检查
|
||||
|
||||
- **CD (Continuous Deployment)**: 持续部署
|
||||
- 自动部署
|
||||
- 环境管理
|
||||
- 回滚机制
|
||||
|
||||
## 工具链
|
||||
|
||||
### 版本控制
|
||||
|
||||
- **Git**: 分布式版本控制系统
|
||||
- **Gerrit**: 代码审查工具
|
||||
- **Gitea**: Git 服务
|
||||
|
||||
### CI/CD
|
||||
|
||||
- **Drone**: 基于容器的 CI/CD 平台
|
||||
- **Jenkins**: 流行的 CI/CD 工具
|
||||
- **GitLab CI**: GitLab 内置 CI/CD
|
||||
|
||||
### 容器化
|
||||
|
||||
- **Docker**: 容器化平台
|
||||
- **Docker Compose**: 多容器编排
|
||||
- **Kubernetes**: 容器编排平台
|
||||
|
||||
### 监控和日志
|
||||
|
||||
- **Grafana**: 监控可视化
|
||||
- **Loki**: 日志聚合
|
||||
- **Prometheus**: 监控和告警
|
||||
|
||||
## 最佳实践
|
||||
|
||||
### 代码管理
|
||||
|
||||
1. 使用分支策略(Git Flow)
|
||||
2. 代码审查(Code Review)
|
||||
3. 提交信息规范(Conventional Commits)
|
||||
|
||||
### 自动化
|
||||
|
||||
1. 自动化测试
|
||||
2. 自动化构建
|
||||
3. 自动化部署
|
||||
|
||||
### 监控
|
||||
|
||||
1. 应用监控
|
||||
2. 日志收集
|
||||
3. 告警机制
|
||||
|
||||
## 学习资源
|
||||
|
||||
- [DevOps 实践指南](https://www.devops-handbook.com/)
|
||||
- [Docker 官方文档](https://docs.docker.com/)
|
||||
- [Kubernetes 官方文档](https://kubernetes.io/docs/)
|
||||
|
||||
|
||||
37
docs/学习笔记/honor工作资料.md
Normal file
37
docs/学习笔记/honor工作资料.md
Normal file
@@ -0,0 +1,37 @@
|
||||
gitlab.md.hihonor.com/w00013566/mdmdemo
|
||||
|
||||
|
||||
1.查看用户 adb shell pm list users
|
||||
2.adb shell getprop ro.product.model如何使用adb命令查看手机版本号
|
||||
3.adb shell getprop ro.soc.model查看手机型号
|
||||
4.fastboot界面查询手机型号 fastboot getvar deicemodel
|
||||
5.fastboot下重启 fastboot reboot
|
||||
android 获取当前页面的 activity adb shell "dumpsys window | grep mCurrentFocus"
|
||||
|
||||
|
||||
|
||||
pmo 开发经理,负责协调交付。
|
||||
规划 对接客户需求
|
||||
se 需求转化为设计方案
|
||||
开发 编码开发
|
||||
测试 编写测试用例,回归验证
|
||||
cmo 编译版本
|
||||
|
||||
一 需求背景
|
||||
二 功能概述
|
||||
三 竞品分析
|
||||
四 设计方案
|
||||
五 工作量评估
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,66 +1,66 @@
|
||||
Drone+Gerrit进化个人超级DevOps平台
|
||||
|
||||
必备(强烈推荐):
|
||||
Gitea(Git+Wiki+项目管理)
|
||||
MinIO(构建产物存储/APK仓库)
|
||||
Nexus(Gradle依赖加速)
|
||||
可选(增强体验)
|
||||
Sentry(移动App崩溃监控)
|
||||
Grafana+Loki(日志监控)
|
||||
MkDocs(个人知识库)
|
||||
|
||||
|
||||
Drone+Gerrit+全套工具
|
||||
请为我生成一份完整的一键部署(install_all.sh),脚本必须在Linux服务器(Ubuntu/Debian/CentOS均可)上可直接执行,用于自动安装以下组件并确保可用:
|
||||
核心组件
|
||||
1.Drone CI Server
|
||||
2.Drone Docker Runner
|
||||
3.Gerrit(轻量版,自用环境)
|
||||
4.Gitea(Git托管+Wiki+Issue)
|
||||
辅助增强组件
|
||||
5.Nexus(Maven/Gradle依赖缓存)
|
||||
6.MinIO(APK、构建产物、日志存储)
|
||||
7、Sentry(APP崩溃收集平台,自托管版本)
|
||||
8.Loki+Promtail+Grafana(日志与监控系统)
|
||||
9.Android SDK +Gradle缓存(用于Drone Runner 构建Android项目)
|
||||
脚本功能要求
|
||||
自动安装Docker(如未安装)
|
||||
自动生成并输出共享DRONE_RPC_SECRET
|
||||
自动创建所有数据目录(如/var/lib/drone、/opt/android-sdk等)
|
||||
每个组件必须使用Docker容器部署
|
||||
每个组件的容器必须包含:
|
||||
自动重启策略
|
||||
端口映射(合理默认)
|
||||
数据卷持久化
|
||||
组件之间自动配置集成:
|
||||
Drone正确连接Runner
|
||||
Gerrit 支持Webhook触发Drone
|
||||
Nexus用于Gradle缓存
|
||||
MinIO用于Drone构建产物上传
|
||||
Android SDK自动安装内容:
|
||||
build-tools
|
||||
platform-tools
|
||||
platforms(如android-34)
|
||||
自动接受所有许可证
|
||||
脚本执行结束时输出信息:
|
||||
各服务器访问地址
|
||||
初始账号与密码(如Gerrit、Gitea)
|
||||
Drone登录底子好
|
||||
MinIO密钥
|
||||
Nexus登录方式
|
||||
Grafana初始化登录账号
|
||||
Android SDK与Gradle缓存路径
|
||||
.drone.yml示例(Android 项目构建模板)
|
||||
脚本要求
|
||||
必须是完整的Bash脚本,保持即可执行
|
||||
所有命令必须真实可运行
|
||||
具有容错能力(重复运行不会报错)
|
||||
不能使用虚构镜像或不存在的命令
|
||||
输出必须清晰友好
|
||||
可直接用在个人或者小团队的DevOps\自动化环境
|
||||
请根据以上要求生成最终的install_all.sh一键部署脚本。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Drone+Gerrit进化个人超级DevOps平台
|
||||
|
||||
必备(强烈推荐):
|
||||
Gitea(Git+Wiki+项目管理)
|
||||
MinIO(构建产物存储/APK仓库)
|
||||
Nexus(Gradle依赖加速)
|
||||
可选(增强体验)
|
||||
Sentry(移动App崩溃监控)
|
||||
Grafana+Loki(日志监控)
|
||||
MkDocs(个人知识库)
|
||||
|
||||
|
||||
Drone+Gerrit+全套工具
|
||||
请为我生成一份完整的一键部署(install_all.sh),脚本必须在Linux服务器(Ubuntu/Debian/CentOS均可)上可直接执行,用于自动安装以下组件并确保可用:
|
||||
核心组件
|
||||
1.Drone CI Server
|
||||
2.Drone Docker Runner
|
||||
3.Gerrit(轻量版,自用环境)
|
||||
4.Gitea(Git托管+Wiki+Issue)
|
||||
辅助增强组件
|
||||
5.Nexus(Maven/Gradle依赖缓存)
|
||||
6.MinIO(APK、构建产物、日志存储)
|
||||
7、Sentry(APP崩溃收集平台,自托管版本)
|
||||
8.Loki+Promtail+Grafana(日志与监控系统)
|
||||
9.Android SDK +Gradle缓存(用于Drone Runner 构建Android项目)
|
||||
脚本功能要求
|
||||
自动安装Docker(如未安装)
|
||||
自动生成并输出共享DRONE_RPC_SECRET
|
||||
自动创建所有数据目录(如/var/lib/drone、/opt/android-sdk等)
|
||||
每个组件必须使用Docker容器部署
|
||||
每个组件的容器必须包含:
|
||||
自动重启策略
|
||||
端口映射(合理默认)
|
||||
数据卷持久化
|
||||
组件之间自动配置集成:
|
||||
Drone正确连接Runner
|
||||
Gerrit 支持Webhook触发Drone
|
||||
Nexus用于Gradle缓存
|
||||
MinIO用于Drone构建产物上传
|
||||
Android SDK自动安装内容:
|
||||
build-tools
|
||||
platform-tools
|
||||
platforms(如android-34)
|
||||
自动接受所有许可证
|
||||
脚本执行结束时输出信息:
|
||||
各服务器访问地址
|
||||
初始账号与密码(如Gerrit、Gitea)
|
||||
Drone登录底子好
|
||||
MinIO密钥
|
||||
Nexus登录方式
|
||||
Grafana初始化登录账号
|
||||
Android SDK与Gradle缓存路径
|
||||
.drone.yml示例(Android 项目构建模板)
|
||||
脚本要求
|
||||
必须是完整的Bash脚本,保持即可执行
|
||||
所有命令必须真实可运行
|
||||
具有容错能力(重复运行不会报错)
|
||||
不能使用虚构镜像或不存在的命令
|
||||
输出必须清晰友好
|
||||
可直接用在个人或者小团队的DevOps\自动化环境
|
||||
请根据以上要求生成最终的install_all.sh一键部署脚本。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,119 +1,119 @@
|
||||
# 前端学习笔记
|
||||
|
||||
## HTML
|
||||
|
||||
### 基本结构
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>页面标题</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>标题</h1>
|
||||
<p>段落内容</p>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
## CSS
|
||||
|
||||
### 样式定义
|
||||
|
||||
```css
|
||||
.container {
|
||||
width: 100%;
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.button {
|
||||
background-color: #007bff;
|
||||
color: white;
|
||||
padding: 10px 20px;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
```
|
||||
|
||||
## JavaScript
|
||||
|
||||
### 基础语法
|
||||
|
||||
```javascript
|
||||
// 变量
|
||||
let name = "JavaScript";
|
||||
const age = 25;
|
||||
|
||||
// 函数
|
||||
function greet(name) {
|
||||
return `Hello, ${name}!`;
|
||||
}
|
||||
|
||||
// 箭头函数
|
||||
const greet = (name) => `Hello, ${name}!`;
|
||||
|
||||
// 异步函数
|
||||
async function fetchData() {
|
||||
const response = await fetch('/api/data');
|
||||
const data = await response.json();
|
||||
return data;
|
||||
}
|
||||
```
|
||||
|
||||
## 框架和库
|
||||
|
||||
### React
|
||||
|
||||
```jsx
|
||||
import React, { useState } from 'react';
|
||||
|
||||
function App() {
|
||||
const [count, setCount] = useState(0);
|
||||
|
||||
return (
|
||||
<div>
|
||||
<p>计数: {count}</p>
|
||||
<button onClick={() => setCount(count + 1)}>
|
||||
增加
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
### Vue
|
||||
|
||||
```vue
|
||||
<template>
|
||||
<div>
|
||||
<p>计数: {{ count }}</p>
|
||||
<button @click="increment">增加</button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
count: 0
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
increment() {
|
||||
this.count++;
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
```
|
||||
|
||||
## 学习资源
|
||||
|
||||
- [MDN Web 文档](https://developer.mozilla.org/)
|
||||
- [React 官方文档](https://react.dev/)
|
||||
- [Vue 官方文档](https://cn.vuejs.org/)
|
||||
|
||||
# 前端学习笔记
|
||||
|
||||
## HTML
|
||||
|
||||
### 基本结构
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>页面标题</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>标题</h1>
|
||||
<p>段落内容</p>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
## CSS
|
||||
|
||||
### 样式定义
|
||||
|
||||
```css
|
||||
.container {
|
||||
width: 100%;
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.button {
|
||||
background-color: #007bff;
|
||||
color: white;
|
||||
padding: 10px 20px;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
```
|
||||
|
||||
## JavaScript
|
||||
|
||||
### 基础语法
|
||||
|
||||
```javascript
|
||||
// 变量
|
||||
let name = "JavaScript";
|
||||
const age = 25;
|
||||
|
||||
// 函数
|
||||
function greet(name) {
|
||||
return `Hello, ${name}!`;
|
||||
}
|
||||
|
||||
// 箭头函数
|
||||
const greet = (name) => `Hello, ${name}!`;
|
||||
|
||||
// 异步函数
|
||||
async function fetchData() {
|
||||
const response = await fetch('/api/data');
|
||||
const data = await response.json();
|
||||
return data;
|
||||
}
|
||||
```
|
||||
|
||||
## 框架和库
|
||||
|
||||
### React
|
||||
|
||||
```jsx
|
||||
import React, { useState } from 'react';
|
||||
|
||||
function App() {
|
||||
const [count, setCount] = useState(0);
|
||||
|
||||
return (
|
||||
<div>
|
||||
<p>计数: {count}</p>
|
||||
<button onClick={() => setCount(count + 1)}>
|
||||
增加
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
### Vue
|
||||
|
||||
```vue
|
||||
<template>
|
||||
<div>
|
||||
<p>计数: {{ count }}</p>
|
||||
<button @click="increment">增加</button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
count: 0
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
increment() {
|
||||
this.count++;
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
```
|
||||
|
||||
## 学习资源
|
||||
|
||||
- [MDN Web 文档](https://developer.mozilla.org/)
|
||||
- [React 官方文档](https://react.dev/)
|
||||
- [Vue 官方文档](https://cn.vuejs.org/)
|
||||
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
# 1. 确保在正确的分支
|
||||
git branch
|
||||
|
||||
# 2. 安装钩子
|
||||
curl -o .git/hooks/commit-msg http://101.43.95.130:8082/tools/hooks/commit-msg
|
||||
chmod +x .git/hooks/commit-msg
|
||||
|
||||
# 3. 重置到提交前状态(如果需要)
|
||||
git reset HEAD~1 --soft
|
||||
git commit -m "你的提交信息"
|
||||
|
||||
# 4. 或者修改现有的提交
|
||||
git commit --amend --no-edit
|
||||
|
||||
# 5. 查看提交信息确认
|
||||
git log -1
|
||||
|
||||
# 6. 推送
|
||||
git push origin HEAD:refs/for/master
|
||||
@@ -1,132 +1,132 @@
|
||||
一、代码与项目管理(和Gerrit配套最好)
|
||||
1.Git+Gerrit
|
||||
作用:强制Code Review
|
||||
保证代码质量和可追踪性
|
||||
避免主干污染
|
||||
适合:个人、小团队、要求质量的项目
|
||||
2、GitLab\Gitea\GitHub(代码管理与协作)
|
||||
对于个人团队:
|
||||
GitLab自建:全功能
|
||||
Gitea:轻量,非常适合小团队
|
||||
GitHub私有仓库:方便、无需维护
|
||||
用途:代码托管
|
||||
Issue、Wiki
|
||||
CI\CD可用
|
||||
3、CI\CD(自动构建、自动测试、自动发包)
|
||||
工具:
|
||||
JenkinsGitHub Actions
|
||||
GitLab CI
|
||||
Drone CI(特别适合小团队,轻量快)
|
||||
提交后代码自动编译
|
||||
自动跑单元测试
|
||||
自动产出APK\IPA
|
||||
自动上传测试平台(蒲公英、Firebase APP Distribution)
|
||||
|
||||
|
||||
|
||||
二、文档与知识沉淀工具(避免重复造轮子最关键)
|
||||
4、Obsidian(强烈推荐)
|
||||
本地Markdown知识库,没有云依赖,非常适合个人开发者:
|
||||
写模块文档
|
||||
写支付\登录模块的复用说明
|
||||
写踩坑记录
|
||||
写Gerrit Change链接
|
||||
写长期可复用的解决方案
|
||||
你会逐渐形成自己的“开发者知识体系”
|
||||
5、Notion\飞书文档\Confluence
|
||||
适合个人+小团队共享知识:
|
||||
需求文档
|
||||
接口文档
|
||||
模块说明
|
||||
复用组件库
|
||||
|
||||
三、自动化重复任务(真正省时间)
|
||||
6.脚手架\项目模板(Project Template)
|
||||
比如新建Android应用时,你可以准备一个“基础项目模板”:
|
||||
网络模块
|
||||
日志模块
|
||||
支付模块
|
||||
基础UI
|
||||
项目结构
|
||||
常用工具类
|
||||
新项目启动直接复制,一次就省两三天。
|
||||
7、自动生成代码的工具
|
||||
|
||||
四、模块化\组件化(适合Android开发者)
|
||||
8、组件库\Library复用
|
||||
payment-sdk
|
||||
login-sdk
|
||||
analytics-sdk
|
||||
file-sdk
|
||||
所有项目implementation一行即可用。
|
||||
这能节省你未来80%重复开发时间。
|
||||
|
||||
|
||||
五、任务管理(保证效率和可控性)
|
||||
9、看板工具
|
||||
Jira(偏重,但专业)
|
||||
飞书多维表格
|
||||
Trello(轻量)
|
||||
GitHub Projects(集成度高)
|
||||
|
||||
目的:清晰知道每天\每周做什么
|
||||
避免遗漏
|
||||
时间成本更可控
|
||||
|
||||
六、团队协作
|
||||
10、IM+自动通知
|
||||
飞书机器人推送构建结构
|
||||
Jenkins推送评审通知
|
||||
Git提交通知
|
||||
任务完成自动通知
|
||||
减少来回沟通时间。
|
||||
|
||||
|
||||
七、质量保证工具
|
||||
11.SonarQube(代码质量扫描)
|
||||
适合个人+小团队:
|
||||
代码规范问题
|
||||
未使用的变量
|
||||
潜在bug
|
||||
安全漏洞
|
||||
让你能不断改进代码质量,避免踩坑。
|
||||
12、单元测试+UI自动化
|
||||
即便你不追求100%覆盖率,有一些基础自动化脚本也能帮你减少重复测试时间。
|
||||
|
||||
|
||||
八、知识+代码AI化(效率爆炸提升)
|
||||
13、AI辅助开发
|
||||
GPT生成代码
|
||||
GPT总结文档
|
||||
GPT作为“个人知识库索引”
|
||||
|
||||
最推荐给个人\小团队的最好(无废话方案)
|
||||
Gerrit(代码评审)
|
||||
CI\CD(自动构建、上传apk)
|
||||
Obsidian+Notion(知识管理+文档)
|
||||
Library模块化复用(避免重复造轮子)
|
||||
项目模板(脚手架)
|
||||
AI辅助开发+总结文档
|
||||
Trello\飞书看板(任务管理)
|
||||
|
||||
个人或小团队提升开发效率,最重要的是:
|
||||
代码可复用、流程自动化、知识不重复、协作轻量化。
|
||||
|
||||
|
||||
常用adb命令
|
||||
com.xunpaisoft.social
|
||||
查看特定应用的进程
|
||||
adb shell ps | grep com.xunpaisoft.social
|
||||
|
||||
android 获取当前页面的 activity adb shell "dumpsys window | grep mCurrentFocus"
|
||||
|
||||
18792702169
|
||||
XZ003311
|
||||
|
||||
|
||||
git config --global user.name "renjianbo"
|
||||
git config --global user.email "18691577328@qq.com"
|
||||
|
||||
ssh-keygen -t ed25519 -C "18691577328@qq.com"
|
||||
|
||||
|
||||
一、代码与项目管理(和Gerrit配套最好)
|
||||
1.Git+Gerrit
|
||||
作用:强制Code Review
|
||||
保证代码质量和可追踪性
|
||||
避免主干污染
|
||||
适合:个人、小团队、要求质量的项目
|
||||
2、GitLab\Gitea\GitHub(代码管理与协作)
|
||||
对于个人团队:
|
||||
GitLab自建:全功能
|
||||
Gitea:轻量,非常适合小团队
|
||||
GitHub私有仓库:方便、无需维护
|
||||
用途:代码托管
|
||||
Issue、Wiki
|
||||
CI\CD可用
|
||||
3、CI\CD(自动构建、自动测试、自动发包)
|
||||
工具:
|
||||
JenkinsGitHub Actions
|
||||
GitLab CI
|
||||
Drone CI(特别适合小团队,轻量快)
|
||||
提交后代码自动编译
|
||||
自动跑单元测试
|
||||
自动产出APK\IPA
|
||||
自动上传测试平台(蒲公英、Firebase APP Distribution)
|
||||
|
||||
|
||||
|
||||
二、文档与知识沉淀工具(避免重复造轮子最关键)
|
||||
4、Obsidian(强烈推荐)
|
||||
本地Markdown知识库,没有云依赖,非常适合个人开发者:
|
||||
写模块文档
|
||||
写支付\登录模块的复用说明
|
||||
写踩坑记录
|
||||
写Gerrit Change链接
|
||||
写长期可复用的解决方案
|
||||
你会逐渐形成自己的“开发者知识体系”
|
||||
5、Notion\飞书文档\Confluence
|
||||
适合个人+小团队共享知识:
|
||||
需求文档
|
||||
接口文档
|
||||
模块说明
|
||||
复用组件库
|
||||
|
||||
三、自动化重复任务(真正省时间)
|
||||
6.脚手架\项目模板(Project Template)
|
||||
比如新建Android应用时,你可以准备一个“基础项目模板”:
|
||||
网络模块
|
||||
日志模块
|
||||
支付模块
|
||||
基础UI
|
||||
项目结构
|
||||
常用工具类
|
||||
新项目启动直接复制,一次就省两三天。
|
||||
7、自动生成代码的工具
|
||||
|
||||
四、模块化\组件化(适合Android开发者)
|
||||
8、组件库\Library复用
|
||||
payment-sdk
|
||||
login-sdk
|
||||
analytics-sdk
|
||||
file-sdk
|
||||
所有项目implementation一行即可用。
|
||||
这能节省你未来80%重复开发时间。
|
||||
|
||||
|
||||
五、任务管理(保证效率和可控性)
|
||||
9、看板工具
|
||||
Jira(偏重,但专业)
|
||||
飞书多维表格
|
||||
Trello(轻量)
|
||||
GitHub Projects(集成度高)
|
||||
|
||||
目的:清晰知道每天\每周做什么
|
||||
避免遗漏
|
||||
时间成本更可控
|
||||
|
||||
六、团队协作
|
||||
10、IM+自动通知
|
||||
飞书机器人推送构建结构
|
||||
Jenkins推送评审通知
|
||||
Git提交通知
|
||||
任务完成自动通知
|
||||
减少来回沟通时间。
|
||||
|
||||
|
||||
七、质量保证工具
|
||||
11.SonarQube(代码质量扫描)
|
||||
适合个人+小团队:
|
||||
代码规范问题
|
||||
未使用的变量
|
||||
潜在bug
|
||||
安全漏洞
|
||||
让你能不断改进代码质量,避免踩坑。
|
||||
12、单元测试+UI自动化
|
||||
即便你不追求100%覆盖率,有一些基础自动化脚本也能帮你减少重复测试时间。
|
||||
|
||||
|
||||
八、知识+代码AI化(效率爆炸提升)
|
||||
13、AI辅助开发
|
||||
GPT生成代码
|
||||
GPT总结文档
|
||||
GPT作为“个人知识库索引”
|
||||
|
||||
最推荐给个人\小团队的最好(无废话方案)
|
||||
Gerrit(代码评审)
|
||||
CI\CD(自动构建、上传apk)
|
||||
Obsidian+Notion(知识管理+文档)
|
||||
Library模块化复用(避免重复造轮子)
|
||||
项目模板(脚手架)
|
||||
AI辅助开发+总结文档
|
||||
Trello\飞书看板(任务管理)
|
||||
|
||||
个人或小团队提升开发效率,最重要的是:
|
||||
代码可复用、流程自动化、知识不重复、协作轻量化。
|
||||
|
||||
|
||||
常用adb命令
|
||||
com.xunpaisoft.social
|
||||
查看特定应用的进程
|
||||
adb shell ps | grep com.xunpaisoft.social
|
||||
|
||||
android 获取当前页面的 activity adb shell "dumpsys window | grep mCurrentFocus"
|
||||
|
||||
18792702169
|
||||
XZ003311
|
||||
|
||||
|
||||
git config --global user.name "renjianbo"
|
||||
git config --global user.email "18691577328@qq.com"
|
||||
|
||||
ssh-keygen -t ed25519 -C "18691577328@qq.com"
|
||||
|
||||
|
||||
|
||||
@@ -1,84 +0,0 @@
|
||||
gitlab.md.hihonor.com/w00013566/mdmdemo
|
||||
|
||||
|
||||
|
||||
1.查看用户 adb shell pm list users
|
||||
2.adb shell getprop ro.product.model如何使用adb命令查看手机版本号
|
||||
3.adb shell getprop ro.soc.model查看手机型号
|
||||
4.fastboot界面查询手机型号 fastboot getvar deicemodel
|
||||
5.fastboot下重启 fastboot reboot
|
||||
android 获取当前页面的 activity adb shell "dumpsys window | grep mCurrentFocus"
|
||||
|
||||
18792702169
|
||||
https://getui.com/notification-push
|
||||
https://www.jiguang.cn/push?source=bdAd&plan=1&unit=480&keyword=24261&bd_vid=6437844800464191042
|
||||
|
||||
C:\Users\86181\AppData\Local\Android\Sdk\build-tools\35.0.0
|
||||
签名会用到下面这个apksigner.bat文件
|
||||
签名: apksigner sign --ks design.jks app-debug.apk
|
||||
检验签名:apksigner verify -v --print-certs app-debug.apk
|
||||
apksigner verify -v --print-certs app-release.apk
|
||||
|
||||
|
||||
https://www.pgyer.com/zhini-android
|
||||
|
||||
|
||||
pmo 开发经理,负责协调交付。
|
||||
规划 对接客户需求
|
||||
se 需求转化为设计方案
|
||||
开发 编码开发
|
||||
测试 编写测试用例,回归验证
|
||||
cmo 编译版本
|
||||
|
||||
一 需求背景
|
||||
二 功能概述
|
||||
三 竞品分析
|
||||
四 设计方案
|
||||
五 工作量评估
|
||||
|
||||
|
||||
|
||||
|
||||
pkill -f "cursor-server"
|
||||
|
||||
|
||||
|
||||
通过网络连接设备(无需USB):
|
||||
adb tcpip 5555 # 将设备切换至TCP/IP模式,在5555端口监听[citation:8][citation:10]
|
||||
adb connect 192.168.1.100:5555 # 在电脑上连接设备IP[citation:8][citation:10]
|
||||
adb connect 192.168.172.236:5555
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
知你的签名信息
|
||||
C:\Users\86181\AppData\Local\Android\Sdk\build-tools\35.0.0>apksigner verify -v --print-certs app-release.apk
|
||||
Verifies
|
||||
Verified using v1 scheme (JAR signing): false
|
||||
Verified using v2 scheme (APK Signature Scheme v2): true
|
||||
Verified using v3 scheme (APK Signature Scheme v3): false
|
||||
Verified using v3.1 scheme (APK Signature Scheme v3.1): false
|
||||
Verified using v4 scheme (APK Signature Scheme v4): false
|
||||
Verified for SourceStamp: false
|
||||
Number of signers: 1
|
||||
Signer #1 certificate DN: C=86, ST=shaanxi, L=xi'an, O=xunpaisoft.com, OU=xunpaisoft, CN=pai xun
|
||||
Signer #1 certificate SHA-256 digest: 9017939b7cda5c41482a8baaeae587cd9025525ac30b9644293a1e4bc8f6b825
|
||||
Signer #1 certificate SHA-1 digest: 89b591ea7a4a9947c13fba0d607ba7d041102cf4
|
||||
Signer #1 certificate MD5 digest: 10bc581409188dd39ed38bad24353be7
|
||||
Signer #1 key algorithm: RSA
|
||||
Signer #1 key size (bits): 2048
|
||||
Signer #1 public key SHA-256 digest: e458cad386b422c6941e0420b611257cb0426c82e719095c3dbd9d9ffb7a90dc
|
||||
Signer #1 public key SHA-1 digest: d3c0988b1a336e326683db4a258459031491b46a
|
||||
Signer #1 public key MD5 digest: 8ef05aa185908c1fc19a4bea27427b24
|
||||
C:\Users\86181\AppData\Local\Android\Sdk\build-tools\35.0.0>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
方案名称aaaaa方案CodeFC220000012470029接入端AndroidAPP名称ceshi签名-
|
||||
包名com.aliqin.mytel包签名47fcc6615485e83b4100433ec9a1d278
|
||||
移动同步成功联通同步成功电信同步成功
|
||||
21
mkdocs.yml
21
mkdocs.yml
@@ -72,6 +72,7 @@ nav:
|
||||
- 学习笔记/个人全自动研发体系.md
|
||||
- 学习笔记/效率提升.md
|
||||
- 学习笔记/重要.md
|
||||
- 学习笔记/honor工作资料.md
|
||||
- Obsidian笔记:
|
||||
- Obsidian/2026-01-05 个人文档管理.md
|
||||
- Obsidian/高频命令.md
|
||||
@@ -195,10 +196,30 @@ nav:
|
||||
- Obsidian笔记体系/Resources/论文/移动操作系统前沿/README.md
|
||||
- Obsidian笔记体系/Resources/论文/移动操作系统前沿/移动系统安全研究.md
|
||||
- Obsidian笔记体系/Resources/论文/移动操作系统前沿/移动边缘计算研究.md
|
||||
- Obsidian笔记体系/Daily/2026-01-13.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aitsc维护命令.md
|
||||
- Obsidian笔记体系/Projects/saars开发/互联网saar系统是什么,可以解决哪些场景需求的问题.md
|
||||
- Obsidian笔记体系/Projects/saars开发/数据库配置.md
|
||||
- Obsidian笔记体系/Projects/saars开发/营养师/健康营养师分析数据.md
|
||||
- Obsidian笔记体系/Projects/saars开发/营养师/营养师分析数据.md
|
||||
- Obsidian笔记体系/Projects/知你-调测/知你--调测.md
|
||||
- gerrit:
|
||||
- gerrit/gerrit上传代码详细指南.md
|
||||
- gerrit/gerrit分支规范.md
|
||||
- gerrit/gerrit提交代码时遇到钩子问题的解决办法.md
|
||||
- gerrit/生成并配置SSH密钥、克隆仓库.md
|
||||
- adb调试命令:
|
||||
- adb调试命令/adb常用命令.md
|
||||
- adb调试命令/常用linux命令.md
|
||||
- dify:
|
||||
- dify/作为安卓高级开发工程师,除了项目管理,你完全可以在技术专项、团队效能和个人成长三大领域构建更懂你的专属助手.md
|
||||
- dify/使用dify,可以生成一个专项事务助手吗,比如公司正规化事务助手.md
|
||||
- git:
|
||||
- git/Git add . 后如何撤销.md
|
||||
- git/git同步远程分支总结.md
|
||||
- git/git常用命令.md
|
||||
- git/git设置用户名和邮箱.md
|
||||
- git/hello.md
|
||||
|
||||
markdown_extensions:
|
||||
- pymdownx.highlight:
|
||||
|
||||
Reference in New Issue
Block a user