完善生产异常维修与备件管理功能
This commit is contained in:
@@ -0,0 +1,241 @@
|
||||
---
|
||||
name: git-submit
|
||||
description: 仓库代码提交规范,覆盖状态检查、提交、同步远程、推送及常见冲突处理
|
||||
---
|
||||
|
||||
## 适用范围
|
||||
|
||||
用于将当前仓库的本地代码安全提交到远程仓库。执行前必须确认用户明确要求提交或推送;仅查看代码、开发功能或运行测试时,不主动执行提交和推送。
|
||||
|
||||
当前项目约定:
|
||||
|
||||
- 默认分支:`main`
|
||||
- 远程名称:`origin`
|
||||
- 远程地址:以 `git remote -v` 的实际输出为准,不重复添加已存在的 `origin`
|
||||
- 提交信息:使用简洁、准确的中文描述,说明本次变更目的
|
||||
|
||||
## 标准提交流程
|
||||
|
||||
### 1. 确认仓库位置和当前状态
|
||||
|
||||
在项目根目录执行:
|
||||
|
||||
```powershell
|
||||
git rev-parse --show-toplevel
|
||||
git status --short --branch
|
||||
git branch --show-current
|
||||
git remote -v
|
||||
```
|
||||
|
||||
检查以下内容:
|
||||
|
||||
- 是否位于目标仓库根目录
|
||||
- 当前分支是否为预期分支,默认应为 `main`
|
||||
- 是否存在未提交修改、未跟踪文件或冲突文件
|
||||
- `origin` 是否已配置,以及拉取和推送地址是否正确
|
||||
|
||||
如果 `origin` 已存在,不要执行 `git remote add origin`。需要修正地址时使用:
|
||||
|
||||
```powershell
|
||||
git remote set-url origin <仓库地址>
|
||||
```
|
||||
|
||||
### 2. 审阅变更内容
|
||||
|
||||
提交前查看文件变更和差异:
|
||||
|
||||
```powershell
|
||||
git status
|
||||
git diff
|
||||
git diff --stat
|
||||
```
|
||||
|
||||
确认:
|
||||
|
||||
- 没有误改、敏感信息、密钥、日志或临时文件
|
||||
- 修改范围与用户需求一致
|
||||
- 不应提交的文件已通过 `.gitignore` 排除
|
||||
- 若发现不属于本次任务的修改,不要擅自删除或覆盖;只暂存确认过的文件
|
||||
|
||||
如需查看某个文件的差异:
|
||||
|
||||
```powershell
|
||||
git diff -- <文件路径>
|
||||
```
|
||||
|
||||
### 3. 暂存需要提交的文件
|
||||
|
||||
优先按文件或目录精确暂存:
|
||||
|
||||
```powershell
|
||||
git add <文件路径>
|
||||
git add <目录路径>
|
||||
```
|
||||
|
||||
仅当确认工作区所有修改都属于本次任务时,才使用:
|
||||
|
||||
```powershell
|
||||
git add .
|
||||
```
|
||||
|
||||
暂存后复核:
|
||||
|
||||
```powershell
|
||||
git status
|
||||
|
||||
git diff --cached
|
||||
git diff --cached --stat
|
||||
```
|
||||
|
||||
如果误暂存文件,可取消暂存,不会丢失文件修改:
|
||||
|
||||
```powershell
|
||||
git restore --staged <文件路径>
|
||||
```
|
||||
|
||||
### 4. 提交本地变更
|
||||
|
||||
确保暂存区内容正确后提交:
|
||||
|
||||
```powershell
|
||||
git commit -m "<简洁明确的提交说明>"
|
||||
```
|
||||
|
||||
提交信息建议:
|
||||
|
||||
- 使用中文描述业务目的或技术变更
|
||||
- 避免使用“修改一下”“临时提交”等无信息内容
|
||||
- 一次提交尽量只包含一个完整主题
|
||||
|
||||
提交后检查:
|
||||
|
||||
```powershell
|
||||
git status --short --branch
|
||||
git log -1 --oneline
|
||||
```
|
||||
|
||||
如果提示 `nothing to commit`,说明当前没有新的已暂存变更;先检查状态和最近提交,不要重复创建空提交。
|
||||
|
||||
### 5. 推送到远程仓库
|
||||
|
||||
首次推送当前分支或需要建立跟踪关系时:
|
||||
|
||||
```powershell
|
||||
git push -u origin main
|
||||
```
|
||||
|
||||
已有跟踪关系时:
|
||||
|
||||
```powershell
|
||||
git push origin main
|
||||
```
|
||||
|
||||
不要在未确认目标分支的情况下直接推送其他分支。推送后核验:
|
||||
|
||||
```powershell
|
||||
git status --short --branch
|
||||
git log -1 --oneline
|
||||
```
|
||||
|
||||
状态应显示本地 `main` 与 `origin/main` 同步,且没有意外的未提交修改。
|
||||
|
||||
## 远程同步与冲突处理
|
||||
|
||||
### 推送被拒绝:远程包含本地没有的提交
|
||||
|
||||
不要直接强制推送。先获取并以变基方式同步:
|
||||
|
||||
```powershell
|
||||
git pull --rebase origin main
|
||||
```
|
||||
|
||||
同步无冲突后再次推送:
|
||||
|
||||
```powershell
|
||||
git push origin main
|
||||
```
|
||||
|
||||
### 变基过程中出现冲突
|
||||
|
||||
1. 查看冲突文件:
|
||||
|
||||
```powershell
|
||||
git status
|
||||
```
|
||||
|
||||
2. 打开冲突文件,保留正确内容并移除冲突标记:
|
||||
|
||||
```text
|
||||
<<<<<<<
|
||||
=======
|
||||
>>>>>>>
|
||||
```
|
||||
|
||||
3. 逐个标记已解决的文件:
|
||||
|
||||
```powershell
|
||||
git add <已解决的文件路径>
|
||||
```
|
||||
|
||||
4. 继续变基:
|
||||
|
||||
```powershell
|
||||
git rebase --continue
|
||||
```
|
||||
|
||||
5. 变基完成后推送:
|
||||
|
||||
```powershell
|
||||
git push origin main
|
||||
```
|
||||
|
||||
如果无法安全解决,保留现场并中止变基:
|
||||
|
||||
```powershell
|
||||
git rebase --abort
|
||||
```
|
||||
|
||||
中止后先向用户说明冲突文件和原因,不要擅自覆盖远程或本地内容。
|
||||
|
||||
### 工作区有本地未提交修改,无法同步
|
||||
|
||||
先查看状态和差异,确认这些修改是否属于当前任务。未经确认不要使用 `git reset --hard` 或其他会丢失修改的命令。必要时可在用户确认后暂存并同步,或先创建临时提交。
|
||||
|
||||
### 只有确认远程历史应被覆盖时才使用强制推送
|
||||
|
||||
默认禁止使用:
|
||||
|
||||
```powershell
|
||||
git push --force
|
||||
```
|
||||
|
||||
如果用户明确确认覆盖远程历史,优先使用更安全的方式:
|
||||
|
||||
```powershell
|
||||
git push --force-with-lease origin main
|
||||
```
|
||||
|
||||
执行前再次核对远程地址、目标分支和将被覆盖的提交。
|
||||
|
||||
## 禁止事项
|
||||
|
||||
- 不重复执行已存在远程名的 `git remote add origin`
|
||||
- 不使用 `git push --force` 绕过推送拒绝
|
||||
- 不使用 `git reset --hard`、清理命令或覆盖操作来隐藏问题
|
||||
- 不提交密钥、密码、个人配置、构建产物和临时文件
|
||||
- 不跳过变更审阅直接执行 `git add .`、`git commit`、`git push`
|
||||
- 不在未确认分支和远程地址时推送
|
||||
|
||||
## 提交检查清单
|
||||
|
||||
- [ ] 已确认项目根目录和当前分支
|
||||
- [ ] 已确认 `origin` 的实际远程地址
|
||||
- [ ] 已查看工作区状态和差异
|
||||
- [ ] 已排除无关修改及敏感文件
|
||||
- [ ] 已精确暂存目标文件
|
||||
- [ ] 已复核暂存区差异
|
||||
- [ ] 已使用清晰的提交信息
|
||||
- [ ] 已确认提交成功
|
||||
- [ ] 已同步远程历史或处理冲突
|
||||
- [ ] 已推送到预期的 `origin/main`
|
||||
- [ ] 已确认本地分支与远程分支同步
|
||||
Reference in New Issue
Block a user