如果只在个人分支上,推送了提交记录,是否需要重新设置基础分支?

4
我在开发时使用多台计算机,因此希望有一种“自我协作”的方式。因此,在远程仓库上创建一个个人分支是有意义的。显然,对于这个分支,我需要频繁地推送/拉取(即每次我在特定的机器上开始/结束编码会话时)。我也喜欢在本地进行变基以压缩/整理我的提交记录。我知道不应该变基已经推送到远程仓库的提交记录。但是,如果这些提交记录只存在于我的私人分支中(没有其他人触及此分支),那么对我在服务器上的提交记录进行变基是否会有任何问题?
2个回答

4

嗯,git对此并没有太大问题。事实上,git自己的开发过程涉及在公共服务器上经常(每天或更频繁)进行变基的分支。只要使用该分支的所有人都知道它经常被变基,就可以了。

然而,请记住,您将拥有旧版本和新版本的补丁,而没有明确的指示哪个版本是替代哪个版本的。您可以通过在变基时强制推送分支并完全删除旧版本来轻松解决这个问题。


1

如果你有一个本地分支,定期推送到一个远程 repo,但是没有人直接使用它(即不会检出或合并来自克隆分支),那么您可以根据需要​​对本地分支进行多次变基。

但是这需要良好的命名约定来识别此类“私有分支”。
同时也假定您有权进行强制推送(push -f),以便使用本地(私有)分支的重写历史覆盖自己历史的远程私有分支。
最后一点并不明显,因为共享 repo 经常禁用此类推送方式以避免“意外”(除非您具有某种 ACL 管理,如Gitolite


共享仓库不会禁用强制推送,除非管理员显式安装钩子(提供了示例,但仍需手动设置为可执行)或使用某些工具(如Gitolite)来完成。 - Jan Hudec
@Jan:a/ 因此使用了“经常”这个词,b/ 您不需要任何钩子、可执行文件或 Gitolite 来禁用它:git config receive.denyNonFastForwards true 就足够了。顺便赞一下您的答案(当时我没看到)。 - VonC
我正在使用Gitolite并且是管理员。因此,我可以进行强制推送,并且我可以强制执行我的分支的私有权限,以防止其他人意外使用它。这个分支的命名约定非常明显。不过还是值得一提的好点。 - Dan

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