Git有两个远程回购站,一个git,一个svn

所以我使用git-svn来与我们的主要svn repo保持同步。 我还创建了一个远程git仓库,以便将分支机构保存在我的机器上,直到这些更改准备好并入svn。 问题是,当我有一个提交需要去svn和git,我必须首先git svn dcommit。 dcommit重写提交的SHA。 如果我推了,git然后将提交视为两次提交,因为它们有不同的SHA但内容相同。 有时候,我会先忘记svn dcommit。 我如何处理这个问题? 我需要从远程分支中删除提交而不从本地回购中删除它。 我一直在做的是重新打开git repo,因为目前我是唯一使用它的人,但这显然不是一个令人满意的解决方案。

编辑:我忘了提及远程git回购是裸露的。


你可以尝试进入Git远程,而不是推到它。 换句话说,不是从本地机器(工作副本所在的位置)执行git push remote ,请登录到远程机器并执行git fetch local 。 这将永远成功。 如果您在执行git svn dcommit之前意外地获取了远程git svn dcommit ,则不会有任何问题。 只需执行dcommit,然后重新获取。 获取将始终强制更新任何需要它的分支。


  • 下次在git repo中添加pre-receive-check挂钩以避免没有任何dcommited信息在master分支上git repo
  • 清理git仓库,并再次推入。 或恢复到同步阶段并再次推送

  • 您可能会发现我在本文中描述的工作流程很有帮助。 特别是,我相信你可以使用步骤3中描述的相同过程来“退出”远程git仓库中的提交,然后git push git-svn-id-tagged提交。 关于远程git回购流量的警告当然是一个重要的问题。

    我使用这个程序与一个裸露的远程git回购。

    链接地址: http://www.djcxy.com/p/89509.html

    上一篇: Git with two remote repos, one git, one svn

    下一篇: showing changes that are not committed to svn