我在开发时使用多台计算机,因此希望有一种“自我协作”的方式。因此,在远程仓库上创建一个个人分支是有意义的。显然,对于这个分支,我需要频繁地推送/拉取(即每次我在特定的机器上开始/结束编码会话时)。我也喜欢在本地进行变基以压缩/整理我的提交记录。我知道不应该变基已经推送到远程仓库的提交记录。但是,如果这些提交记录只存在于我的私人分支中(没有其他人触及此分支),那么对我在服务器上的提交记录进行变基是否会有任何问题?
嗯,git对此并没有太大问题。事实上,git自己的开发过程涉及在公共服务器上经常(每天或更频繁)进行变基的分支。只要使用该分支的所有人都知道它经常被变基,就可以了。
然而,请记住,您将拥有旧版本和新版本的补丁,而没有明确的指示哪个版本是替代哪个版本的。您可以通过在变基时强制推送分支并完全删除旧版本来轻松解决这个问题。
如果你有一个本地分支,定期推送到一个远程 repo,但是没有人直接使用它(即不会检出或合并来自克隆分支),那么您可以根据需要对本地分支进行多次变基。
但是这需要良好的命名约定来识别此类“私有分支”。
同时也假定您有权进行强制推送(push -f),以便使用本地(私有)分支的重写历史覆盖自己历史的远程私有分支。
最后一点并不明显,因为共享 repo 经常禁用此类推送方式以避免“意外”(除非您具有某种 ACL 管理,如Gitolite)
git config receive.denyNonFastForwards true
就足够了。顺便赞一下您的答案(当时我没看到)。 - VonC