[英]Using git merge --squash to merge develop into master when master was previously merged into develop?
我有两个分支。 我的主分支和我的功能分支。
我正在功能分支上进行开发,并在那里进行了几次提交,并将其推送到远程。 我不时地将master分支合并到我的developer分支中,以确保获得最新的更改。
现在,我已经完成了develop分支上的开发工作,并希望将develop分支合并到master分支中。
理想情况下,我想将develop分支上的所有提交压缩为一个提交。 我想我可以做到
git merge --squash
但是,当我不时将master合并到development中时,我仍然可以这样做吗?
您已不时将master
合并到develop
-是说您已不时在本地仓库中更新了master
分支并使用master
分支中的更改来develop
分支,对吗?
在这种情况下,当您进行git checkout develop
和git log
,并且如果您是唯一在该分支上工作过的人,则应该只看到截止日期的提交-在这种情况下,您可以直接进行git merge --squash develop
,它将把develop
分支所做的所有提交并git merge --squash develop
到一个分支中。
如果您也有其他人在此develop
分支上工作 ,并且他们的提交也在您之间,并且您只想压缩您的提交,则执行git rebase -i
,在其中您可以通过替换来选择要压缩的提交相应单词前面的单词'pick'带有'squash' 。
或者,您可以按照此处列出的第一种方法进行操作。
将功能分支中的多个提交转换为单个提交的最简单方法是,重置主节点中的功能分支更改,然后再次提交-一切都作为一个。
如果您使用git merge develop --squash
将develop
分支合并到master
,它将不会将提交提交压到develop
分支上,而是在master分支上创建一个“ merge commit”。 通过下图说明:
假设原来提交历史(合并前develop
成master
):
A---B---F---G master
\
…---C---D---E develop
在执行git merge develop --squash
,新的提交H
就像您进行真正的合并一样,将更改从develop
分支更改为master
。
A---B---F---G---H master
\
…---C---D---E develop
因此,您可以将master
合并到develop
,然后将develop
分支合并回master
分支。 但这不是推荐的方法。 您应仅将一个分支视为主分支 (例如,将master
分支视为主分支)。 当另一个分支( develop
)具有新功能/更改时,您只需要将develop
合并到master
分支即可。 当稍后在develop
分支上进行其他新更改时,您仅需要不时将develop
分支合并到master
分支中。
如果你只是想壁球犯下的develop
分支,可以使用git rebase -i develop~n
,然后编辑要壁球(改变提交drop
到squash
在交互式窗口)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.