我有一个长期运行的本地功能分支,我定期使用 master 对其进行压缩和 rebase ,以使其在本地保持最新状态。

完成后,我希望我的功能在 master 之上进行一次压缩提交。

但是,我担心在硬件问题的情况下会丢失我的工作,因此作为预防措施,我将其推送到 github 上的一个新功能分支。由于这样做,我不太确定如何使我的功能分支保持最新,因为它已经被推送(我宁愿不 merge 来自创建 merge 提交的 master 的更改)。

我是唯一使用此功能分支的开发人员。所以我不担心在已经推送的分支上重写历史记录。是否可以将额外的提交推送到我的远程功能分支,在我完成该功能后压缩该分支,然后将其重新设置为 master?或者 git 会抛出一些关于分支发散的错误,因为分支已经是公开的?

或者,我在想,当我的工作完成时,我可以简单地取消跟踪远程功能分支(因此我的本地分支不再与远程分支有关联),压缩本地功能分支中的提交,然后重新设置我的功能在 master 之上本地分支。

最佳答案



是的,是的,是的。既然你说你不怕重写这个分支的历史,你可以用它做任何你想做的事情。



Git 没有公共(public)分支和私有(private)分支的概念。
您可以公开或私下使用分支,
Git 不会提示这个。

当您在 master 之上重新设置分支时,
你基本上从你从 master 中的时间线分支的点重播你的提交。
如果在那之后 master 中有提交,
在那之后你在你的功能分支中进行了提交,
那么 master 和你的分支已经分歧了。
当你 rebase 时,可能会有冲突,
取决于两个分支的变化。

总而言之,您可以在未记录的功能分支中做任何您想做的事情,然后在 master 之上 rebase 。
当然,这取决于你做什么,
重新定位可能更容易(很少或没有冲突)或更难(很多冲突)。
你经常 rebase 可能很好,
这样你就会一点一点地发现冲突,
而不是一下子发生很多冲突。

关于Git rebase 推送的功能分支,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40811453/

10-14 17:51
查看更多