Cherry-pick冲突与Git回滚
1. Git 回滚(适用于代码层面)
如果你的 UAT 环境是通过 Git 管理的(比如 release/uat
分支),可以通过以下方式回滚:
方法 1:git revert
(推荐,保留历史记录)
# 找到要回滚的 commit(如 1724ab7442)
git log# 回滚特定 commit(生成一个新的反向 commit)
git revert 1724ab7442# 推送到远程
git push origin release/uat
在 Git 中,如果你希望在 cherry-pick
或 merge
时 跳过某个文件的修改,可以使用以下几种方法:
如果只想 cherry-pick 部分文件
1. 检查当前冲突状态
git status
你会看到类似这样的输出:
Unmerged paths:(use "git restore --staged <file>..." to unstage)(use "git add <file>..." to mark resolution)both modified: src/modules/srm/router.js
这说明 router.js
有冲突未解决。
2. 解决冲突
方法 1:手动解决冲突
- 打开冲突文件
src/modules/srm/router.js
,找到<<<<<<<
、=======
、>>>>>>>
标记的冲突部分。 - 手动修改文件,保留你想要的代码,并删除冲突标记。
- 标记冲突已解决:
git add src/modules/srm/router.js
3. 继续 cherry-pick
冲突解决后,继续执行:
git cherry-pick --continue
4. 如果只想 cherry-pick 部分文件
如果你想跳过 router.js
,只提交其他文件的修改:
- 先解决冲突(按上述方法)。
- 重置
router.js
到原始状态:
git reset src/modules/srm/router.js # 从暂存区移除
git checkout src/modules/srm/router.js # 恢复文件到 HEAD 状态
- 提交剩余文件:
git commit -m "cherry-pick 7c5330430b, 跳过 router.js"
如果只想保留其中一个提交,可以这样修改
# 1. 确保当前在 feature/20250723_ex_heshuang1_prod 分支
git checkout feature/20250723_ex_heshuang1_prod# 2. 启动交互式变基(修改最近2个提交)
git rebase -i HEAD~2# 3. 在编辑器中修改:
# 将第二个提交的 `pick` 改为 `drop`(或直接删除该行)
pick 8a7a6bb feature: 新增用户失效校验
drop bcb6b01 Revert "feature: M3和M4指标明细增加事业部和品类"# 4. 保存退出(Vim中按`:wq`)
# 5. 强制推送到远程(需权限)
git push origin feature/20250723_ex_heshuang1_prod --force