git merge squash and recurring conflicts

旧城冷巷雨未停 提交于 2019-11-28 18:48:03

By squashing the merge, you've created a commit which has the effect of, but is not really, a merge.

That is, the working tree has the modifications you'd expect, but the metadata doesn't: crucially, the commit doesn't have two parents (one on master and one on alt) and therefore subsequent merges can't figure out the last common ancestor.


Useful uses of squash

  1. merging a completely finished feature branch onto master. I'll accumulate any useful information into the squashed commit, but specifically don't want this feature's incremental development history polluting the master commit timeline.
  2. merging several independent features (or contributions from different developers) onto the same integration branch, again without preserving their incremental histories. I could rebase them all together, and then use rebase -i to squash their commits, but this is easier

Useless uses of squash

Any merge where you want to keep the history and ancestry metadata intact, such as any time you want repeated recursive merges to work correctly, specifically what the OP is trying to do.

squashjust isn't really a good default, which is why it isn't the default.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!