我有一个长期运行的本地功能分支,我定期与master进行挤压和重新定位,以使其在本地保持最新。
完成后,我希望我的功能在主节点上的单个压缩提交中。
但是,我担心由于硬件问题而失去工作,因此作为预防措施,我将其推送到github上的新功能分支。自从这样做以来,我真的不确定如何使功能分支保持最新状态,因为它已经被推送了(我宁愿不合并来自主创建合并提交的更改)。
我是唯一使用此功能分支的开发人员。因此,我不必担心在已经推送的分支上重写历史记录。将其他提交推送到我的远程功能分支,然后在完成功能后压扁该分支,然后将其重新建立为基础就可以了吗?还是因为分支已经公开,git会对分支分支抛出一些错误?
或者,我以为完成工作后,可以简单地取消跟踪远程功能分支(因此我的本地分支不再与远程分支有关联),将提交压缩在本地功能分支中,然后重新建立我的功能在master上本地分支。
可以将额外的提交推送到我的远程功能分支,当我完成该功能时压缩该分支,然后将其重新设置为 master 吗?
是的,是的,是的。既然你说你不害怕改写这个分支的历史,你就可以用它做任何你想做的事情。
或者 git 会抛出一些关于分支分歧的错误,因为分支已经公开了?
Git 没有公共和私有分支的概念。你可以公开或私有地使用分支,Git 不会抱怨这一点。
当您在 之上重新建立分支时master,您基本上是从 中时间线的分支点重放您的提交master。如果在那之后有提交master,并且您在该点之后在功能分支中进行了提交,那么master您的分支就出现了分歧。当你rebase时,可能会出现冲突,具体取决于两个分支的变化。
总之,您可以在未记录的功能分支中执行任何您想要的操作,然后在master. 当然,根据您所做的事情,变基可能更容易(很少或没有冲突)或更困难(很多冲突)。经常 rebase 可能是件好事,这样你就可以一点一点地发现冲突,而不是一次发现很多冲突。