对远程使用 git,对本地使用 svn

Using git for remote and svn for local

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

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

我们仍然打算在内部使用 SVN,但希望将我们的项目与远程项目同步,并从两个部分对其不断变化进行推送和拉取。这将通过 GIT 完成。

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

根据您要执行的操作,有多种可能的答案。

如果你因为不想学习新工具而想回避Git,那我只能劝你重新考虑。 Git是目前使用最广泛的SCM,基础知识并不难学,而且无论如何比Git<->SVN双向桥更容易学习。

如果您因为不想发布本地历史记录而想继续使用 SVN,请了解有关 Git 的更多信息,[=47= 中有大量专门针对此用例的功能].您不需要单独的工具。

如果您希望继续使用 SVN,因为您有内部要求,并且不想发布您的本地历史记录,那么您可以通过 SVN 检出和 Git 存储库并排。这将比所有替代方案更容易出错,也更复杂。在一天结束时,你会

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

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

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

  • 推送结果(这贡献了今天的变化到上游)

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

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

就因为之前的回答让我哭的一塌糊涂

I already pulled the GIT project locally, and now have that folder and our SVN folder, but don't know how to merge them.

使用正确的东西 (tm) 正确的方法 (tm)

  1. 安装和 RTFM Git
  2. RTFM Git-SVN
  3. 使用 Git-SVN
  4. 克隆 SVN 主干
  5. 向此克隆添加额外的遥控器(合作伙伴的 Git-repo)
  6. 从中拉出

现在您的本地 Git-repo 中将(至少)有两个 "branches" - trunk 和 foreign。在所有提交到 SVN 之后的一天结束时:

  • 从 SVN 拉取
  • 从国外拉取
  • 将 SVN 合并到国外
  • 推向国外