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

时间:2010-07-07 16:26:46

标签: git git-svn

所以我使用git-svn与我们的主svn repo保持同步。我还创建了一个远程git仓库,用于推送分支以保护我的机器,直到更改准备好合并到svn中。问题是,当我有一个需要同时转到svn和git的提交时,我必须首先使用git svn dcommit。 dcommit重写提交的SHA。如果我已经推送,git然后正确地查看提交,因为它们具有不同的SHA但具有相同的内容。有时候,我忘了首先发送dvmit。如果我这样做,我该如何处理?我需要从远程分支中删除提交而不从本地存储库中删除它。我一直在做的是打击git repo,因为此刻,我是唯一使用它的人,但这显然不是一个令人满意的解决方案。

编辑:我忘了提到远程git repo是裸露的。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

  1. 下次在git repo中添加 pre-receive-check 挂钩,以避免在主分支上没有任何dcommited信息到git repo
  2. 清理git repo,然后再次推送。或者恢复到同步阶段并再次推送

答案 2 :(得分:0)

您可能会发现我描述的in this article工作流程非常有用。特别是,我相信您可以使用步骤3中描述的相同过程来“退出”远程git仓库中的提交,然后git push git-svn-id-tagged提交。关于远程git仓库交通的警告当然是重要的。

使用裸露的远程git repo。