【问题标题】:Merging only modified files using Git使用 Git 只合并修改过的文件
【发布时间】:2010-10-25 06:42:33
【问题描述】:

我有一个包含内容和源文件的存储库。开发人员应该只处理源文件。为了节省空间,开发人员不应将内容文件(以 GB 为单位)克隆到其本地存储库。源文件不作为子模块存在于项目中,而是位于内容所在的同一位置。

我的方法是这样的 - 我从 Master 创建了一个分支 Source,然后从该分支中​​删除了内容文件。我发布了相同的分支以克隆给开发人员。

当我将 Source 分支的更改合并回 Master 时,Master 中的内容文件将被删除。如何限制它?如果不可能,那么有没有办法实现我的要求,即拥有一个单独的分支/克隆,只有过滤的文件,即其中的源文件?

【问题讨论】:

    标签: git


    【解决方案1】:

    显而易见的答案是您应该拥有单独的源和内容存储库。或者只是保留内容。

    【讨论】:

    • 应用程序框架不允许将源文件与内容分开。我可以使用 Git 使用来自同一来源的文件模式(例如,用于源文件的 .java、.groovy 等和用于内容的其余部分)创建单独的存储库吗?
    • +1 同意。在我自己的 CMS 项目中,我有一个包含代码的根项目、一个包含用于测试的小示例数据文件的测试项目和一个内容项目,它是主要内容,仅包含配置和内容。
    • @kaychaks:获取应用框架的源代码并修复错误。如果您无法获得源代码,请提交错误报告。
    • @kaychaks:在同一个文件夹或子文件夹中混合多个存储库通常是一个非常糟糕的主意。就算能做到,也是自找麻烦。
    【解决方案2】:

    您根本不应该从 Source 分支中删除文件。如果SourceMaster 只是同一存储库中的分支,那么您的开发人员无论如何都会拥有这些内容;把它放在身边并没有什么坏处。

    【讨论】:

    • 内容文件类型为flv、wmv、pdf、doc,大小超过200GB。由于它是跨位置开发团队,因此在远程克隆期间将给网络带来巨大的开销。而且我认为扫描如此大量的文件以检测某些源文件中的更改也会成为 Git 的性能瓶颈。
    • “你认为”?所以你在没有首先检查这是否真的是一个问题的情况下采取了行动?呃。 1) 我的观点仍然成立:如果 Source 和 Master 是 same 存储库中的分支,它们无论如何都会被克隆到开发人员的机器上。 2) 您计划多久克隆一次完整的存储库? 3)Git优先使用文件修改次数;只有当它们不同时,才会检查内容。这里没有损失。 4)让您的远程团队克隆存储库一次,然后让那里的人克隆该存储库。像馅饼一样容易。
    【解决方案3】:

    使用git-merge 合并两个分支,然后git-revert 删除删除内容文件的提交。

    % git checkout Master
    % git merge Source
    % git revert <content-removal-commit-id>
    

    或者你可以反过来做,并在之前删除内容删除提交 你合并为大师。它有点复杂,但它可能会让你的 Master 历史更清晰。

    % git checkout Source
    % git branch SourceMerge
    % git checkout SourceMerge
    % git revert <content-removal-commit-id>
    % git checkout Master
    % git merge SourceMerge
    

    【讨论】:

      【解决方案4】:

      您确定要将这些媒体/文档文件包含在您的存储库中吗?是否要跟踪 200GB 媒体库的更改?

      如果您在源分支上时将它们的所有者目录引用放在 .gitignore 文件中,git 将忽略这些文件,因此不会触摸/删除它们。

      http://git-scm.com/docs/gitignore

      【讨论】:

      • 只有在它们未被跟踪时才会忽略它们——我认为它们不是。
      猜你喜欢
      • 2011-03-07
      • 2018-01-15
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多