/## Context
当前仓库在多人协作时缺少统一 Git 操作约束,开发者在 pull、rebase、merge、stash 和分支切换中的行为不一致,导致两类核心问题:
本次设计需要在不改变业务运行时行为的前提下,给出可执行、可落地、可审计的协作机制,覆盖日常开发与异常处置场景。
Goals:
.gitattributes)减少跨平台伪冲突。Non-Goals:
main/master 仅通过 PR 合入,个人开发在 feature/*、fix/* 分支进行。不选原因:无法有效约束冲突来源,且回溯困难。
统一日常同步基线为“先检查本地改动,再同步远端”。
选择:pull 前执行状态检查(git status),发现未提交改动时必须先 commit 或 stash。
原因:把风险前置,避免 merge/rebase 时混入脏工作区。
备选:允许直接 git pull 自动处理。
不选原因:高概率引入隐式冲突和覆盖风险。
默认以 rebase 同步个人分支(保持线性历史),主干集成仍通过 PR merge 策略控制。
选择:开发者本地 fetch + rebase 为主,减少无意义 merge commit。
原因:冲突定位更清晰,历史可读性更高。
备选:全面 merge 同步。
不选原因:历史噪音大,冲突来源不直观。
建立“本地改动保护”硬性规则。
选择:禁止在未理解后果时使用 reset --hard、checkout -- . 等破坏性命令;提供 stash 命名规范和恢复流程。
原因:覆盖问题主要来源于破坏性命令与无保护 pull。
备选:仅口头提醒。
不选原因:不可审计,执行一致性低。
增加仓库冲突预防基线。
选择:补充 .gitattributes(统一文本归一化、二进制标注、必要的 merge 策略)与 .gitignore 建议项。
原因:减少跨系统换行差异和二进制误合并引发的伪冲突。
备选:维持默认 Git 行为。
不选原因:跨平台团队中冲突噪音无法下降。
文档化并模板化操作流程。
选择:在 doc/ 增加“日常同步 SOP”“冲突处理 SOP”“本地改动恢复 SOP”。
原因:将经验固化为可执行步骤,降低新人上手成本。
备选:分散在聊天记录或口头传递。
不选原因:知识不可追踪,执行偏差大。
.gitattributes 调整后可能触发一次性大 diff -> Mitigation:分阶段引入并在独立 PR 中完成,避免与业务改动混合。.gitattributes/.gitignore 基线变更,并单独评审。回滚策略:若新基线导致异常,可先回退文档强制项与 .gitattributes 改动,保留最小安全规则(pull 前检查与本地改动保护)。
pull.rebase=true,还是按分支类型区分?safe-pull)?