gpt4 book ai didi

git - 在推送之前将多个提交 merge 为一个

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

这个问题不仅涉及如何完成这项任务,还涉及这样做是好还是坏的 Git 实践。

考虑到在本地,我在 master 分支上做大部分工作,但我创建了一个主题分支,我将称之为“topical_xFeature”。在“topical_xFeature”上工作并在master分支上来回切换做其他工作的过程中,结果发现我在“topical_xFeature”分支上做了不止一次的commit,但是在每次commit之间,我都没有做推。

首先,您会考虑这种不好的做法吗?坚持每次推送每个分支一次提交不是更明智吗?在什么情况下,在进行推送之前在一个分支上进行多次提交会更好?

其次,我应该如何最好地将 topical_xFeature 分支上的多个提交带入 master 分支以进行推送?不担心它只是在多个提交被推送的地方进行推送是一件令人讨厌的事情,还是以某种方式将提交 merge 为一个然后推送是否不那么烦人?同样,如何做到这一点?

最佳答案

对于您的第一个问题,不,一次推送多个提交并没有错。很多时候,您可能想将您的工作分解为几个小的、合乎逻辑的提交,但只有在您觉得整个系列都准备就绪时才将它们向上推。或者您可能在断开连接时在本地进行多次提交,并在再次连接后将它们全部推送。没有理由将自己限制为每次推送一次提交。

我通常发现,让每个提交都保持一个单一的、合乎逻辑的、连贯的更改是个好主意,其中包括它工作所需的一切(因此,它不会让您的代码处于损坏状态)。如果你有两次提交,但如果你只应用第一次提交,它们会导致代码被破坏,那么将第二次提交压缩到第一次提交中可能是个好主意。但是,如果您有两个提交,每个提交都进行了合理的更改,那么将它们作为单独的提交进行推送就可以了。

如果你确实想将多个提交压缩在一起,你可以使用 git rebase -i。如果您在分支 topical_xFeature 上,您将运行 git rebase -i master。这将打开一个编辑器窗口,其中列出了一堆以 pick 为前缀的提交。您可以将除第一个以外的所有更改更改为 squash,这将告诉 Git 保留所有这些更改,但将它们压缩到第一个提交中。完成后,检查 master 并 merge 到您的功能分支中:

git checkout topical_xFeature
git rebase -i master
git checkout master
git merge topical_xFeature

或者,如果您只想将 topical_xFeature 中的所有内容压缩到 master 中,您可以执行以下操作:

git checkout master
git merge --squash topical_xFeature
git commit

你选择哪一个取决于你。通常,我不会担心有多个较小的提交,但有时您不想为额外的较小提交而烦恼,所以您只需将它们压缩成一个即可。

关于git - 在推送之前将多个提交 merge 为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5721566/

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