首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确使用git merge --squash

如何正确使用git merge --squash
EN

Stack Overflow用户
提问于 2016-04-06 06:05:59
回答 2查看 9.6K关注 0票数 13

我对git相当陌生,而且只自己工作,所以我没有使用它可以做的许多功能,但我遇到了一个过程,要么是我想错了,要么是做错了什么。

我有一个带有1次提交(init)的主分支。

我有一个有180个提交的开发分支。

今天,我终于准备好将开发分支合并到主分支中,我阅读了一些内容,并了解了有关squash的内容。这看起来很有用,因为我不会用开发分支中相同的WIP提交来污染主分支。

所以我跑了

代码语言:javascript
复制
git checkout master
git merge --squash develop
git commit

从这里看,一切都和我预期的一样,master有2个提交,develop仍然有180个。在我的脑海中,我现在再次查看develop,并继续工作。我推送到bitbucket,并在我的项目中查看了一下这个合并,并注意到了以下几点:

代码语言:javascript
复制
1 commit(s) on master and not on develop
179 commit(s) on develop and not on master

这只是预期行为,我应该忽略它,还是我做错了什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-06 06:17:54

这是意料之中的,因为git将你所有的提交合并到一个单一的提交中,这与你的开发分支中的提交是不同的。将提交看作是一组更改的容器,如果您更改了内容,您将拥有一个不同的内容。

你要么不得不接受这个场景,要么你可以通过在功能分支中工作来调整你的工作流程,例如master - develop feature-branch。

一旦完成了一个功能,您就可以从feature-branch执行squash-merge来开发和删除feature-branch。现在,您可以在没有所有WIP提交的情况下进行从开发到主控的合并,例如,当您发布新版本或类似版本时。

票数 12
EN

Stack Overflow用户

发布于 2016-04-06 06:30:35

当您在Git中压缩提交时,它会将它们合并为一个提交。但是,当您想要将来自多个提交的更改合并到新的提交中时,您可以合并。

在你的例子中,我相信你打算做的是一个没有“快进”的合并。使用这种合并,最终在master (初始和合并)中有2个提交,在dev中有180个提交。

代码将是(在dev中的最后一次提交之后):

代码语言:javascript
复制
git checkout master
git merge dev --no-ff
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36437912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档