Git Merge不同步Repos

时间:2012-01-11 17:18:37

标签: git version-control

我开始使用git跟踪我对第三方网络应用的自定义。我与已经使用git跟踪他们的变化一段时间的顾问交流。我会尽量让这个易于理解。

  • 我有一个来自我们某个环境的导出副本
  • 我使用导出作为基础[LOCAL]创建了一个存储库,并且已经定期提交
  • 顾问有自己的最新存储库(不包括我的更改)[3RDPARTY]
  • 我已经分享了他们的git repo [REMOTE]

现在,我想要做的就是完成并合并 [LOCAL] [REMOTE] 之间不同的所有文件。

我不关心我目前在LOCAL中的分支或历史。我只关心从现在开始使用REMOTE并发送/接收拉请求以与顾问互动。

你怎么建议我能做到这一点?我尝试在LOCAL上创建一个新分支,并使用3RDPARTY中的更新文件覆盖所有文件。然后我希望新分支和我的常规开发分支之间的合并会给我一个冲突,所以我可以很容易地将它们全部合并到KDiff3,但它只是自动充电并覆盖了我所有的变化。

1 个答案:

答案 0 :(得分:1)

您尝试复制所有文件并获得合并但它无法正常工作。这应该有效,但我认为您可能需要遵循一些我将尝试解释的不同步骤。

应该有一个标记,或在3RDPARTY中签入与导出环境中签入点相同的签到点,这是LOCAL的第一次签到。我将此签到MERGE_BASE。请尝试以下步骤:

  • 首先在git checkout masterREMOTE并确保它是3RDPARTY git pull originREMOTE的最新动态。
  • git branch mergeb <MERGE_BASE> <MERGE_BASE> LOCAL中 我在历史上谈到的是相同或接近的 与你最初创作时的内容相同 LOCAL
  • 直接在mergeb中复制最新版本的来源 在我们刚创建的REMOTE分支中的文件顶部 REMOTE。不要复制.git目录!
  • 在分支mergeb的{​​{1}}中使用git add来确保您的所有内容 更改将应用​​于git索引,然后运行git commit。现在 您的REMOTE mergeb分支应该具有相同的来源 在LOCAL。 (您可以使用git遥控器对您的LOCAL执行此操作 变化,但由于你不关心历史我建议只是 这样做可以简化流程。)
  • 再次检查主分支git checkout master
  • 此时创建一​​个您将用于贡献的新分支 他们......做git checkout -b remote_work
  • 现在,只需将mergeb分支合并到您的remote_work分支即可 与git merge --no-ff mergeb。此时你可能会 所有冲突的合并与他们的工作和你的工作 解决。

完成此过程并将工作提交到您的分支后,您现在应处于所需的确切状态。

完成所有这些操作后,如果您希望所有工作都显示为3RDPARTY remote_work REMOTE git rebase master分支REMOTE上的3RDPARTY,那么就像3RDPARTY一样}}

从那时起,我会让remote_work的主人与他们的REMOTE个回购同步,并保留未在{{1}}中加入{{1}}或{{1}}回购中的其他各个分支。

如果此过程适合您,请告诉我。