我有三个分支:
master
old
test
Master和old完全相同,test
包含我所有的更改和整个新项目。我想用测试分支替换master分支,并且测试分支(和旧分支)保持不变。我怎么能这样做?
我一直在考虑:
git checkout test
git merge -s ours master
git checkout master
git merge test
这是安全的方法吗?
答案 0 :(得分:2)
我不建议合并。这可能恰巧是你想要的(如果你的test
分支有master
作为父母);但这是一个复杂的操作,这里不需要,因为你似乎想扔掉旧的master
。代替:
git branch -f master test
就是这样;它会使master
指向test
指向的任何提交; <{1}}和test
将保持不变。
答案 1 :(得分:1)
这是使用我们的合并策略的实现。从本质上讲,这将用测试覆盖master。
git checkout test
git merge -s ours master
git checkout master
git merge test
结果应该是你的主人现在基本上是测试。
我们的 - 这会解析任意数量的头,但合并的结果始终是当前的分支头。它旨在用来取代边支的旧发展历史
答案 2 :(得分:1)
你的方式是干净的解决方案(-s theirs
策略会缩短你的命令,但是git没有它。)
如果您对保持master
可居住不感兴趣,可以
git checkout master
git reset --hard test