【问题标题】:Git : not ignored file in two branch needs to be differentGit:两​​个分支中未被忽略的文件需要不同
【发布时间】:2011-08-22 05:00:48
【问题描述】:

我想问一下你处理这种情况的方法是什么样的:我有这个设置文件 mongoid.yml,我有同一个项目的两个分支:master 和 dev。我没有将 mongoid.yml 放入 gitignore,因为当我推送两个分支时我需要它在提交中。但是每当我在任一分支中编辑它时,例如,如果我在 dev 分支中编辑它,它就会显示在 git status 中,当我提交然后将 dev 合并到 master 时,master 分支的 mongoid 现在看起来像 dev 中的那个。我需要他们与众不同。你会如何处理这个问题?谢谢!

【问题讨论】:

    标签: git configuration configuration-files


    【解决方案1】:

    你想创建一个 dev 分支然后检查它。将配置文件更改为您需要的内容。切换回另一个分支。

    git merge -s ours dev
    

    这将忽略您在 dev 分支中所做的事情,但仍会在历史记录中标记这些更改已被合并。从现在开始,当您合并到 dev 分支和从 dev 分支合并时,您的配置将保持您需要的状态。这是设置开发分支的正确方法。

    希望这会有所帮助。

    【讨论】:

    • 如果您稍后更改文件(在 dev 或 master 中)会发生什么?
    • 感谢 adymitruk 我选择了 Michaël Witrant,因为他的示例中的链接似乎直接解决了我的问题。
    【解决方案2】:

    您可以对文件使用不同的合并策略来阻止合并。

    创建一个.gitattributes 文件:

    mongoid.yml merge=ours
    

    那么当这个文件在合并过程中发生冲突时,旧的将被保留。

    更多信息herehere

    【讨论】:

    • 我认为这样做了,链接的解释基本上就是我的问题本身:避免从另一个分支覆盖数据库配置文件,因为它们使用不同的数据库表。谢谢迈克尔
    【解决方案3】:

    您可以将您对文件的更改保存在一个单独的提交中,始终位于 master 之上,并合并其父级。

    例如:

    • 你在dev工作,
    • 如果您必须更改 mongoid.yml,则只需更改此文件即可提交,
    • 在切换到 master 之前,您先 git rebase -i master 并将您的 mongoid.yml 提交移至底部(如果有多个提交,则将它们全部用第一个压扁),
    • 然后你切换到master并合并dev的父级:git merge dev^

    每次合并都需要做一些工作,并且您会丢失 dev 分支中 mongoid.yml 上的更改历史记录,但它应该可以工作。

    【讨论】:

      猜你喜欢
      • 2016-02-14
      • 1970-01-01
      • 2016-04-04
      • 1970-01-01
      • 2011-12-29
      • 2018-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多