我在git中有两个远程分支, master 和 test 。 master 反映了接下来要部署到我们的生产环境的任何内容。 test 是相同的,但对于我们的测试环境。
由于停滞或报废的项目 test ,随着时间的推移,理论上会累积很多 master 中不存在的提交。我该如何避免这种情况?
我知道一种解决方案是删除我的本地和远程测试分支。然后基于 master 创建一个新的并将其推送到远程。然而,这种方法迫使我的同事和构建/部署系统也在删除新的本地分支之前删除它们的本地分支。
答案 0 :(得分:2)
允许提取test
分支的另一种方法是将test
的索引重置为master
的索引,而不是重写test
的历史记录,但添加新提交将反映与master
相同的状态
然而,这将在test
历史记录中留下所有额外的提交。
git checkout master
git merge -s ours test # make master believe that everything from test has been
merged to master up to this point.
git checkout test
git reset master -- . # reset the index content of test to the index of master
git checkout # reset the working tree of test to its new index
git commit -m "test reset to master"
git merge master # should be trivial merge
git push origin master
git push origin test