假设我有一个master
分支和一个feature
分支。 feature
严重过时,我现在想要使其与master
完全相同,但我希望对feature
所做的所有更改都是为了完成“合并”而出现在单一提交。
首先我尝试了这个:
git checkout feature
git merge --squash master
但这给了我一万亿次冲突。我不想手动解决冲突,我想简单地接受master
中的任何内容并完成它。所以我这样做:
git checkout feature
git merge --squash -X theirs master
有了这个,我仍然会遇到合并冲突(文件在master
中被删除。我现在该怎么做?我可以做git reset --hard master
但是我没有收到显示更改的提交消息
有什么想法吗?我正在使用git 1.8.1.2
。
答案 0 :(得分:1)
查看git command for making one branch like another的答案。请注意,首先很少有任何理由这样做(正如已经提到的那个问题的第一条评论)。
还有其他方法可以做到这一点,而不是列在那里。这假设您处于存储库的顶级目录中:
git checkout feature
git merge --no-commit -s ours master # -s ours just to make things quiet
git rm -q -rf . # remove all resulting files
git checkout master -- . # replace with master branch version
git commit
事实上,你根本不需要git merge
命令;这是没有它的变种:
git checkout feature
git rm -q -rf .; git checkout master -- .
git rev-parse master > .git/MERGE_HEAD
git commit
(不同之处在于最后一个git commit
将为您提供不同的启动消息 - 使用git merge --no-commit
同时在git目录中留下MERGE_MSG
文件,以提供提交消息)