Git将一个分支推送到另一分支的作用及多环境分支操作疑问
Git测试分支操作相关问题解答
1. git push origin my_experiment:experimental的操作原理
这是Git的refspec推送语法,作用是将本地my_experiment分支的提交历史直接覆盖到远程仓库的experimental分支指针上,注意这不是合并操作:
- 如果本地
my_experiment的提交历史是基于最新的远程experimental提交演进的,属于快进更新,推送可以直接成功 - 如果本地
my_experiment的提交基准和远程experimental的最新提交有分叉,普通推送会失败,需要加-f(强制推送)参数才能完成覆盖
2. 调整后的测试流程可行性说明
你调整后的测试流程逻辑是可行的,先同步最新main代码到experimental,再从experimental拉个人修改分支,保证你的测试是基于最新生产代码进行的。
关于是否需要加-f参数:
- 如果团队约定
experimental同一时间只有一个人使用,没有其他人同时提交修改,你从最新experimental拉出分支改完提交后推送是快进更新,不需要加-f - 如果有其他人同时往
experimental提交了代码,你的本地分支基准落后于远程experimental,推送会失败,因为experimental是测试环境分支,你可以直接加-f强制覆盖,符合你们的使用场景
3. 恢复流程说明
你写的恢复流程逻辑是对的,但必须加-f参数:
git push origin experimental:experimental -f
这个操作的前提是你的本地experimental分支还停留在合并main之后、拉取my_experimental分支之前的状态,没有被改动过。
如果你的本地experimental已经被污染,可以用更稳妥的兜底恢复命令,直接把远程experimental重置到和main完全一致的状态:
git push origin main:experimental -f
内容的提问来源于stack exchange,提问作者John Little
相关产品推荐
相关产品推荐

