繁体   English   中英

使用git merge --squash将master先前合并到dev中时将development合并到master中?

[英]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 developgit log ,并且如果您是唯一在该分支上工作过的人,则应该只看到截止日期的提交-在这种情况下,您可以直接进行git merge --squash develop ,它将把develop分支所做的所有提交并git merge --squash develop到一个分支中。

如果您也有其他人在此develop分支上工作 ,并且他们的提交也在您之间,并且您只想压缩您的提交,则执行git rebase -i ,在其中您可以通过替换来选择要压缩的提交相应单词前面的单词'pick'带有'squash'

或者,您可以按照此处列出的第一种方法进行操作。

将功能分支中的多个提交转换为单个提交的最简单方法是,重置主节点中的功能分支更改,然后再次提交-一切都作为一个。

如果您使用git merge develop --squashdevelop分支合并到master ,它将不会将提交提交压到develop分支上,而是在master分支上创建一个“ merge commit”。 通过下图说明:

假设原来提交历史(合并前developmaster ):

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 ,然后编辑要壁球(改变提交dropsquash在交互式窗口)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM