面向运维和DevOps场景,提供Git远程操作、回滚及冲突解决方案。通过指定目标分支和操作类型,可生成安全可执行的命令及操作说明,帮助用户高效完成日常运维任务。
## 目标 - 目标分支:rel - 操作类型:合并 - 回滚目标:#{rollback_commit} 以下给出安全的远程合并、回滚与冲突处理命令及说明(不包含任何破坏性操作)。 --- ## 一、合并到 rel(将 #{source_branch} 合入 rel) 建议在本地完成合并验证后再推送远端,尽量使用远端分支引用以确保来源一致。 命令: ``` # 1) 同步远端 git fetch --prune origin # 2) 切换并更新 rel(仅允许快进) git switch rel git pull --ff-only origin rel # 3) 预演合并(不提交,便于检查) git merge --no-ff --no-commit origin/#{source_branch} # 如无冲突,可检查暂存区变更 git diff --staged # 4) 确认后提交合并 git commit -m "merge #{source_branch} into rel" # 5) 推送前进行干跑检查 git push --dry-run origin rel # 6) 推送 git push origin rel ``` 说明: - 使用 origin/#{source_branch} 确保合并的是远端已确认的内容。 - 使用 --no-commit 先预演,可在提交前确认变更与日志。 - 使用 pull --ff-only 防止意外产生本地合并提交。 - 推送前使用 --dry-run 检查远端可接受性。 可选(合并前打保护标签,便于回滚): ``` git tag -a pre-merge-rel-$(date +%Y%m%d%H%M%S) -m "pre-merge snapshot on rel" git push origin --tags ``` --- ## 二、冲突处理流程 命令: ``` # 查看冲突文件 git status # 比较冲突详情 git diff # 针对单文件选择 ours/theirs(谨慎使用,逐个文件决策) git checkout --ours path/to/file git checkout --theirs path/to/file # 解决后标记已解决 git add path/to/file # 继续合并 git merge --continue # 若需放弃本次合并(不影响历史) git merge --abort ``` 说明: - ours 指当前分支(rel)的版本,theirs 指被合并分支(#{source_branch})的版本。 - 建议优先手动编辑冲突标记并用 git add 确认,再执行 git merge --continue。 - 放弃合并使用 git merge --abort,不会改动远端历史。 --- ## 三、回滚(基于回滚目标 #{rollback_commit}) 回滚使用 git revert(非破坏性),可安全在 rel 上执行并推送。 1) 判断回滚目标是否为合并提交 ``` git show -s --format=%H%n%p%n%s #{rollback_commit} # 如果 %p 输出有两个或以上父提交,说明是合并提交 ``` 2) 回滚流程(非合并提交) ``` git fetch --prune origin git switch rel git pull --ff-only origin rel # 生成一次“反向”提交来撤销该变更 git revert --no-edit #{rollback_commit} # 推送前进行干跑检查 git push --dry-run origin rel # 推送 git push origin rel ``` 3) 回滚流程(回滚一个“合并提交”) ``` git fetch --prune origin git switch rel git pull --ff-only origin rel # -m 1 指定以第一个父提交为主线(常见:将合并的改动整体回退) git revert -m 1 --no-edit #{rollback_commit} git push --dry-run origin rel git push origin rel ``` 说明: - revert 会生成新的“撤销提交”,不会改写历史,适合生产分支。 - 若误回滚,可对“revert 提交”再次执行 git revert 进行“反向回滚”。 --- ## 四、合并后快速校验与回退预案 命令: ``` # 查看最近一次提交(确认提交信息与变更范围) git log -1 --oneline git show --name-status # 如果需要立刻撤销刚刚的合并提交(假设其 SHA 为 <new_merge_commit>) git revert --no-edit <new_merge_commit> git push origin rel ``` --- ## 安全提示 - 严禁使用 git push --force、git reset --hard 等破坏性操作对 rel 进行改写。 - 仅使用 git pull --ff-only 更新 rel,避免意外本地合并。 - 合并前先预演(--no-commit)并使用 --dry-run 检查推送。 - 建议在重要操作前为 rel 打临时标签,便于快速定位与回滚。 - 若远端开启受保护分支策略,优先通过 Pull Request 完成合并与审阅(同样不涉及破坏性操作)。
## 基于输入 - 目标分支:prod(远程:origin) - 操作类型:回滚 - 回滚目标提交:a1b2c3d 以下流程采用 git revert(新增逆向提交),避免使用破坏性命令,确保远程仅做快进推送,不使用强制推送。 --- ## 命令 ### 1) 前置检查与备份(强烈建议) ```bash # 同步远程最新状态 git fetch origin --prune # 确认工作区干净 git status --porcelain # 确认待回滚提交在 prod 历史中(返回码为0表示是祖先) git merge-base --is-ancestor a1b2c3d origin/prod # 备份当前远程 prod 指针(打保护标签) git tag -a backup/prod-before-revert-$(date +%Y%m%d-%H%M%S) origin/prod -m "Backup before reverting a1b2c3d" git push origin --tags ``` ### 2) 基于 prod 创建回滚分支(避免直接在 prod 上动手) ```bash # 从远程 prod 创建本地回滚分支 git switch -c hotfix/prod-revert-a1b2c3d origin/prod # 可选:确认目标提交信息 git show --no-patch --pretty=fuller a1b2c3d ``` ### 3) 安全回滚(revert)单个提交 先判断该提交是否为合并提交: ```bash # 查看父提交数量(>1 表示为合并提交) git show -s --format=%p a1b2c3d ``` - 若为普通提交(单父提交),执行: ```bash git revert --no-edit a1b2c3d ``` - 若为合并提交,需指定主线父提交,一般 prod 为 parent 1: ```bash git revert -m 1 --no-edit a1b2c3d ``` 如需一次回滚但暂不提交以便批量处理(可选): ```bash # 普通提交 git revert --no-commit a1b2c3d && git commit -m "Revert a1b2c3d on prod" # 合并提交 git revert -m 1 --no-commit a1b2c3d && git commit -m "Revert merge a1b2c3d on prod (mainline=1)" ``` ### 4) 冲突处理命令 发生冲突时: ```bash # 查看冲突文件 git status # 按需取用版本(谨慎使用以下二选一): # 保留当前分支(prod现状)版本: git checkout --ours -- . # 或采用回滚变更侧的版本: git checkout --theirs -- . # 逐个文件手动编辑冲突标记后,添加到暂存 git add <file1> <file2> ... # 继续完成 revert git revert --continue # 若需要放弃此次回滚(未完成前) git revert --abort ``` 说明: - 在 revert 冲突中,--ours 倾向于保留当前 prod 的内容,--theirs 倾向于采纳“回滚补丁”侧的内容。实际以冲突语义为准,建议逐文件审阅。 ### 5) 推送与合入远程 首选做法:将回滚分支推送到远程,由受保护策略合入 prod。 ```bash # 推送回滚分支 git push -u origin hotfix/prod-revert-a1b2c3d ``` 如果必须直接更新远程 prod(确认无保护策略阻止,且已完成必要审查): ```bash # 方式A:在回滚分支上直接推送到远程 prod(快进,无强推) git push origin hotfix/prod-revert-a1b2c3d:prod # 或方式B:先在本地将回滚结果合并入本地 prod,再推送 git switch -c prod-update origin/prod git merge --no-ff --no-edit hotfix/prod-revert-a1b2c3d git push origin HEAD:prod ``` ### 6) 回滚结果验证 ```bash # 拉取并确认远程 prod 最新提交包含 Revert 提交 git fetch origin --prune git log --oneline -n 5 origin/prod # 对比回滚前后变化(需要使用之前的备份标签名) git diff --stat backup/prod-before-revert-<timestamp>..origin/prod ``` ### 7) 出现问题时的撤销与恢复 如误回滚且已推送(仍保持非破坏策略),用“再次 revert”撤销此前的 Revert 提交: ```bash # 找到刚才的 Revert 提交哈希(记为 R) git log --grep="Revert" --oneline origin/prod # 反向回滚(撤销回滚) git switch -c hotfix/prod-unrevert-R origin/prod git revert --no-edit R git push -u origin hotfix/prod-unrevert-R # 按流程合入 prod(见第5步) ``` --- ## 说明 - 全流程使用 git revert 生成新的逆向提交,属于可追溯、可回退的安全操作,不改写历史。 - 通过在独立分支完成回滚与冲突处理,避免直接影响远程 prod。 - 若目标提交为合并提交,必须使用 -m 指定主线父提交,通常 prod 为 parent 1;请通过 git show -s --format=%p 验证。 - 备份标签用于一键定位回滚前的远程 prod 状态,必要时可对比或再回滚。 --- ## 安全提示 - 禁止在共享/生产分支上使用以下破坏性操作:git reset --hard、git push --force、git push --force-with-lease、历史改写(rebase/filter-branch/git replace)等。 - 回滚前务必 git fetch 并确认本地与 origin/prod 同步;确保工作区干净再操作。 - 优先将回滚提交推送到回滚分支,经审查后再合入 prod;若需直接更新 prod,确保仅做快进推送。 - 合并提交回滚时务必确认主线父提交(-m 参数),错误的主线会引入相反方向的变更。 - 冲突解决请逐文件确认,不要盲目全量 ours/theirs。 - 统一使用完整或足够长度的提交哈希,避免短 SHA 歧义(a1b2c3d 需在仓库内唯一)。
## 目标 - 目标分支:dev - 操作类型:推送 - 回滚目标:#{rollback_commit} 以下为安全、无破坏性的 Git 远程推送、回滚与冲突处理命令及说明。 --- ## 一、基础准备(建议先执行) ```bash # 查看并同步远端 git remote -v git fetch --prune origin # 切换到 dev 分支并确认跟踪关系 git switch dev # 若提示不存在可用:git checkout dev git branch -vv git branch --set-upstream-to=origin/dev dev # 若未设置上游 # 确认本地与远端差异 git log --oneline --graph --decorate origin/dev..dev git status ``` 说明: - 确保工作区干净(无未提交改动)再执行远程操作。 - 确认 dev 已跟踪 origin/dev,避免误推到错误远端。 --- ## 二、远程推送到 dev(非破坏性) ```bash # 1) 确保本地可快进更新(避免产生不必要的合并提交) git pull --ff-only origin dev # 2) 推送本地 dev 到远端 git push origin dev ``` 说明: - 使用 --ff-only 确保只是快进更新,不会自动产生 merge 提交。 若推送被拒绝(提示非快进/需要先拉取): 方案 A(团队允许线性历史,且本地提交未推送过):优先使用 rebase ```bash git fetch origin git rebase origin/dev # 将本地提交变基到最新的 origin/dev 之上 # 若出现冲突,解决后: git add <冲突文件...> git rebase --continue # 或 --abort 放弃变基 # 变基完成后推送 git push origin dev ``` 方案 B(团队偏好合并提交): ```bash git fetch origin git merge --no-ff origin/dev # 产生一条合并提交,保留历史分叉 # 解决冲突后: git add <冲突文件...> git merge --continue # 或 --abort 取消合并 git push origin dev ``` --- ## 三、非破坏性回滚到 #{rollback_commit} 在共享分支上回滚,使用 git revert 生成新的逆向提交,避免重写历史。 通用保护(强烈建议先做备份分支或标签): ```bash # 以当前 dev 创建备份分支(可自定义名称) git branch backup/dev-rollback-<your-tag> dev ``` 1) 回滚单个指定提交: ```bash git switch dev git pull --ff-only origin dev git revert --no-edit #{rollback_commit} # 本地验证通过后推送 git push origin dev ``` 说明:该操作仅撤销该次提交的变更,不改变历史结构。 2) 回滚到某历史状态(撤销 #{rollback_commit} 之后的所有提交) - 含义:将 dev 的内容回到 #{rollback_commit} 的效果,但通过生成一组/一个逆向提交来实现(不重写历史)。 - 安全做法(按从新到旧的顺序逐个 revert,排除合并提交): ```bash git switch dev git pull --ff-only origin dev # 逐个撤销 #{rollback_commit}..HEAD 区间内的普通提交(从新到旧) git rev-list --no-merges #{rollback_commit}..HEAD | xargs -n 1 git revert --no-edit # 若愿意在一次提交中完成,可改用(易遇到冲突时集中处理): # git revert --no-commit #{rollback_commit}..HEAD # git commit -m "Revert to #{rollback_commit} on dev (non-destructive)" git push origin dev ``` 说明: - 若区间内包含合并提交,需要单独处理该合并提交,通常用 -m 指定主线父分支: ```bash # 示例:回滚某个合并提交(以第 1 父为主线,按实际需调整父编号) git revert -m 1 <merge_commit_sha> ``` --- ## 四、冲突处理流程(适用于 rebase/merge/revert) ```bash # 1) 查看状态与冲突文件 git status # 2) 打开并解决冲突(编辑标记 <<<<<<< ======= >>>>>>>) # 3) 标记解决 git add <已解决的文件...> # 4) 根据操作继续 # - 变基: git rebase --continue # 继续 # git rebase --skip # 跳过当前补丁(审慎使用) # git rebase --abort # 放弃变基并回到开始前状态 # - 合并: git merge --continue # 继续 # git merge --abort # 放弃合并 # - 回滚: git revert --continue # 继续 # git revert --abort # 放弃此次回滚 ``` --- ## 五、验证与推送 ```bash # 本地验证(示例) git diff --stat git log --oneline --graph --decorate -n 20 # 运行项目构建/测试脚本(根据项目实际) # 推送到远端 git push origin dev ``` --- ## 安全提示 - 禁止对共享分支使用强制推送(如 git push --force/--force-with-lease)。本流程均为非破坏性操作。 - 避免在已推送的公共提交上做历史重写(如 rebase/commit amend 后再强推)。 - 回滚优先使用 git revert,必要时先创建备份分支(如 backup/dev-rollback-...)。 - 拉取时优先使用 --ff-only,防止意外产生合并提交;若需合并,请人工确认并记录。 - 冲突解决后务必本地构建与测试通过再推送,以降低对生产的影响。 - 如需回滚合并提交,必须明确主线父分支(-m 参数),并谨慎评估影响范围。
在变更窗口内快速完成远程拉取、合并与回滚;用标准化命令降低生产事故,并保留操作说明用于复盘与审计。
将发布流程中的Git环节模板化;流水线失败时一键生成回滚与冲突处理指引,缩短恢复时间并减少人工介入。
沉淀统一操作规范,约束随意命令;发布前清晰呈现影响与安全提示,保障多人协作与多分支同步更可控。
遇线上异常仅需输入分支与目标提交,即获可执行方案与核对清单,快速止损并避免二次故障。
不熟悉远程操作或冲突处理时,按步骤执行即可完成任务,降低学习门槛并减少向同事求助次数。
在客户现场进行版本切换或热修复时,快速生成稳妥命令与安全提示,保障交付过程可控、可回退。
为运维与DevOps提供一位“懂生产安全、会自我保护”的Git操作助手,面向远程协作、受控回滚与冲突处理等高频场景,自动生成可复制执行的命令+步骤说明+风险提示,帮助团队在发布、热修复、应急处置中以最小风险、高速度完成操作。核心价值:1) 把复杂操作变成三步走:选分支—选操作—(可选)填回滚版本;2) 内置安全护栏,默认拒绝高风险动作并给出前后置检查要点;3) 固化最佳实践,降低新人上手门槛,减少沟通与失误;4) 显著缩短排障与恢复时长,提升稳定性与交付确定性。
将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。
把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。
在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。
免费获取高级提示词-优惠即将到期