首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git与--no-ff和--squash合并

git与--no-ff和--squash合并
EN

Stack Overflow用户
提问于 2013-05-30 10:15:35
回答 1查看 3.1K关注 0票数 7

我正在使用git flow方法来管理我的存储库中的分支,如:http://nvie.com/posts/a-successful-git-branching-model/

因此,我应该使用的命令顺序如下:

代码语言:javascript
复制
git checkout mybranch
git pull --rebase origin develop
git checkout develop
git merge --no-ff mybranch

然而,在某些情况下,我想做一件不同的事情:

我想保留我在feature分支(mybranch)上的所有提交,但在合并到develop中时,将它们合并在一起(或压缩)为一个diff。

因此,我认为命令的顺序应该是:

代码语言:javascript
复制
git checkout mybranch
git pull --rebase origin develop
git checkout develop
git merge --no-ff --squash mybranch

如果我把--no-ff--squash结合起来,我会做错什么吗?

我在犹豫要不要尝试这一点,因为“压缩”和“保存历史”是正交需求--参见Squashing all of my commits (including merges) into one commit without altering history

我的基本原理是,我希望在一个分支(mybranch)上保留历史,而在另一个分支(develop)上保留suqash -->因为这些操作是在不同的分支中执行的,所以这是可以的。

EN

回答 1

Stack Overflow用户

发布于 2013-05-30 12:31:18

我试着把--squash和--no-ff组合在一起,得到了:

代码语言:javascript
复制
fatal: You cannot combine --squash with --no-ff.

git合并基本上就是一个挤压。在解决冲突之后,它将在开发时显示为一个提交。合并修订的差异是冲突解决的结果。是的,我的分支上的更改是保留的。只需在合并后执行"gitk mybranch &“即可进行验证。

此外,影子是正确的。不要害怕。创建一个新的分支,尝试一下,看看结果是什么。

损坏是在你的"git pull --rebase origin develop“命令中造成的。

答案(假设您有基于源/开发的本地开发分支):

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

https://stackoverflow.com/questions/16826912

复制
相关文章

相似问题

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