gpt4 book ai didi

Git merge 而不包括从一个分支到另一个分支的提交

转载 作者:IT王子 更新时间:2023-10-29 01:30:09 26 4
gpt4 key购买 nike

在开发过程中,我经常需要提交和推送“中间”提交,即提交代码不可编译或正在更改某些内容等。我不想进行此类提交,但这是简单的要求继续我从办公室到家的工作,有时让其他开发人员获得他们可以开始工作的基础。

我以为我找到了解决这个问题的方法:

  1. 我创建一个单独的“dev”分支并进行所有中间提交。

  2. 一旦代码处于良好状态,就 merge 到 master。因此 master 不会包含“中间”提交,而只会包含“正常”提交。

  3. 删除包含所有中间提交的“dev”分支。

但这行不通。当我进行 merge 时,不仅 merge 提交包含在 master 中,而且还包含来自“dev”分支的所有“中间”提交。所以删除“dev”分支没有任何意义,它的“中间”提交留在那里。

所以问题是:是否有可能以 master 仅包含其自己的提交 + merge 提交而不包含来自第二个分支的提交的方式进行 merge ?如果这不可能,您能否建议我如何实现我的目标 - 能够临时保存中间结果,同时又能在以后无缝删除它们?

最佳答案

当您将“dev”分支 merge 到 master 时,尝试

git checkout master
git merge --squash dev
git commit -m "Add new feature."

--squash 选项会将所有中间更改压缩为一个大更改。

如果您需要更有限的控制(例如 reordering commits 和做多个小压扁),您也可以使用 git rebase --interactiveThis answer解释了 git merge --squashgit rebase --interactive 之间的区别。

关于Git merge 而不包括从一个分支到另一个分支的提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14824431/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com