许多开源项目(例如django)都有GIT镜像,而这些镜像又分为私有或公共开发。 GIT镜像与git svn rebase
保持同步。但是Pro Git Book包含了这个明确的建议:
啊,但是变相的幸福并非如此 没有它的缺点,可以 总结为一行:不要将已推送到公共存储库的提交重新绑定。
如果您遵循该指南,那么您将会这样做 没事的。如果你不这样做,人们会 讨厌你,你会被嘲笑 朋友和家人。
当你改变东西时,你就是 放弃现有的提交和 创造类似的新的但是 不同。如果你推送提交 在某个地方,其他人把它们拉下来 和基础工作,然后你 用git rebase重写这些提交 再推它们,你的 合作者将不得不重新合并 他们的工作和事情会变得混乱 当你试图把他们的工作拉回来 进入你的。
像Django这样的开源镜像是否打破了上面关于不在公共回购中进行变基的粗体规则?如果没有,为什么不呢?如果是这样,使用这些镜像可以通过“常规”非重新定位的Git项目完成什么?如果这是一个明显的问题,请道歉;我是一个Git新手。
答案 0 :(得分:2)
这个想法是:
git svn rebase
的直接结果都不应该被重新定位:它的历史记录必须保持原始导入状态才能成功进行dcommit 另见Easy merging in svn using git-svn。
因此,如果受各种Django仓库中的merge / rebase影响的分支不是与dcommit相关的分支(同步回SVN仓库),那么应该没问题。