将多个GitHub提交合并为一个

5

我搜过很多但没有找到类似的问题。

假设我有两个分支。分支 S(稳定版)和分支 E(实验版)。实验版是从稳定版“创建”的。

我一直在执行分支 E 上的工作:

git add -A .
git commit -m "my new commit"
git push origin E

它完全可以正常工作。当我认为是时候这样做时,我只需要执行以下操作:

git checkout S
git merge E
git push origin S

这也可以正常工作,但我的稳定分支被实验性分支的每个提交所淹没。我不想将所有提交都压缩成一个实验性分支,而是希望在合并时只有一个提交,而不是所有单独的提交。

可能有一个非常简单的命令可以做到这一点,但我没有找到它。不幸的是,git rebase E并不能解决问题,所有提交仍然显示为单独的提交。

谢谢您的时间。


你对分支和合并的理解似乎有些偏差。我建议你阅读Git Book中的分支章节 - poke
1
你为什么这样认为呢?我之前在Git Book中读过这一章,概念几乎相同。我正在对exp进行一些更改,并将其移植到稳定版本。再次对exp进行更改并移植到稳定版本... 你为什么认为这是“不好”的方式?你能提出更好的建议吗?对我来说,拥有两个分支非常重要,这样我就可以在一个分支上工作,并在一段时间和测试后将所有更改推送到稳定分支中。 - Archi
通常,提交应该是相当小的单元,您不希望失去在实验分支上创建的所有提交中的信息。通过合并,您可以创建一个合并提交,它只是将两个(或多个)分支线组合在一起,同时保持所有信息完好无损。您没有“垃圾邮件”您的分支,因为分支只是指向单个提交的指针。该提交然后包含有关其父项的信息,从而创建整个Git历史记录。- 将稳定和实验分支分开并不坏,而是非常普遍和完全正常的! - poke
谢谢,我理解了你的观点,你是正确的。然而,我认为从时间X到Y压缩所有实验性提交并与稳定版本合并并不那么糟糕,特别是因为如果发现错误,我仍然能够在exp分支上创建还原提交并将其移植到稳定版本中,因为实验分支仍然保留每个单独提交的完整历史记录。如果我错了,请纠正我,我还在学习GitHub的魔力 :)。 - Archi
保留单个提交并不会阻止您执行上述任何操作,相反,它将允许您回顾并查看您以某种方式进行更改的方式(以及通常为什么)。但是,如果您喜欢以这种方式工作,我不会阻碍您;) 我只是想指出,您通常会希望保留这些提交。但是,Git没有一种工作流程,因此请随意使用您感到舒适的任何方法 :) - poke
1个回答

2

尝试使用git merge --squash E代替git merge E


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接