用另一个分支替换master

时间:2016-08-10 11:00:53

标签: git

我有三个分支:

master
old
test

Master和old完全相同,test包含我所有的更改和整个新项目。我想用测试分支替换master分支,并且测试分支(和旧分支)保持不变。我怎么能这样做?

我一直在考虑:

git checkout test
git merge -s ours master
git checkout master
git merge test

这是安全的方法吗?

3 个答案:

答案 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

结果应该是你的主人现在基本上是测试。

合并策略

我们的 - 这会解析任意数量的头,但合并的结果始终是当前的分支头。它旨在用来取代边支的旧发展历史

参考

git-merge

答案 2 :(得分:1)

你的方式是干净的解决方案(-s theirs策略会缩短你的命令,但是git没有它。)

如果您对保持master可居住不感兴趣,可以

git checkout master
git reset --hard test