使用git for remote和svn for local

时间:2015-06-12 11:17:58

标签: git svn tortoisesvn

在工作中我们使用SVN直到现在为一个项目(我们使用TortoiseSVN)。对于同一个项目,来自其他国家的人使用GIT并对其进行了更改。我们希望对项目进行更改,并将其推回到服务器上的远程项目中。我已经拉了项目,现在将他们的版本放在一个文件夹中,将我们的版本放在另一个SVN管理的文件夹中。

说,我们其中一个人(我)想要与GIT项目同步。我应该如何将GIT项目与我的本地SVN项目合并,将其推送到删除GIT服务器,并推动可能来自我们内部使用SVN的进一步修改?

我们仍然会在内部使用SVN,但希望将我们的项目与远程项目同步,并通过两个部分的连续更改来推拉。这将通过GIT完成。

我已经在本地提取了GIT项目,现在有了该文件夹和我们的SVN文件夹,但不知道如何合并它们。

2 个答案:

答案 0 :(得分:2)

只是因为我从上一个回答中流血而哭泣

  

我已经在本地提取了GIT项目,现在有了该文件夹和我们的SVN文件夹,但不知道如何合并它们。

正确的方式(tm)

正确的事情(tm)
  1. 安装和RTFM Git
  2. RTFM Git-SVN
  3. 使用Git-SVN克隆SVN中继
  4. 向此克隆添加其他遥控器(parthner' Git-repo)
  5. 从中拉出
  6. 现在你已经(至少)有两个"分支"在你当地的Git-repo - 主干和外国。在所有提交SVN之后的一天结束时:

    • 从SVN拉
    • 从外国拉
    • 将SVN合并到外国
    • 推送到外国

答案 1 :(得分:1)

根据您的目的,有多种可能的答案。

如果你想避免使用Git,因为你不想学习新工具,那么我只能建议重新考虑。 Git是目前使用最广泛的SCM,基础知识并不难学,并且它们在任何情况下都比Git SVN双向桥更容易学习。

如果您想继续使用SVN,因为您不想发布本地历史记录,那么了解更多有关Git的信息,Git中有大量功能完全适用于此用例。您不需要单独的工具。

如果您想继续使用SVN,因为您需要在内部执行此操作,并且您不想发布本地历史记录,那么您可以通过并行安装SVN checkout和Git存储库来手动合并。这将比所有替代方案更容易出错且更复杂。在一天结束时,你会

  • git checkout到昨天的提交(如果你把昨天的Git工作树保持在与原来相同的状态,你无事可做。)

  • 将您的SVN结帐复制到Git克隆,并git commit结果。这会创建一个提交,其父级是昨天的提交,即SVN历史记录和新Git历史记录之间的共同祖先。

  • 与上游Git分支合并。这将创建一个新的Git提交,其中包含您的更改和上游更改。

  • 推送结果(这有助于今天改为上游)

  • 将工作树文件从Git复制回SVN,在适当的时候运行svn addsvn rmsvn commit结果(这会将远程Git更改为您当地的SVN存储库)。

这应该相对容易编写脚本。