2010-07-07 164 views
1

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

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

回答

1

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

1
  1. 添加前接受检查下一次,以避免无dcommited信息对主分支的git回购
  2. 干净的混帐回购协议,并再次将其推钩混帐回购协议。或恢复到同步阶段并再次推送
0

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

I do在裸露的远程git仓库中使用此过程。