Git:两个分支中的未忽略文件需要不同

Git:两个分支中的未忽略文件需要不同,git,configuration,configuration-files,Git,Configuration,Configuration Files,我想问一下您处理这种情况的方法是什么:我有一个设置文件mongoid.yml,同一个项目有两个分支:master和dev。我没有将mongoid.yml放入gitignore中,因为我需要在推送两个分支时将其放入提交中。但是,每当我在任何一个分支中编辑它时,例如,如果我在开发分支中编辑它,它就会显示为git状态,当我提交然后将开发合并到主分支时,主分支的mongoid现在看起来就像开发分支中的mongoid。我需要它们有所不同。你将如何处理这个问题?谢谢 您可以将对文件的更改保留在单独的提交中,

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

您可以将对文件的更改保留在单独的提交中,始终位于主控文件的顶部,并合并其父文件

例如:

  • 您使用的是
    dev
  • 如果必须更改
    mongoid.yml
    ,则只需更改此文件即可进行提交
  • 在切换到
    master
    之前,您需要
    git rebase-i master
    并将
    mongoid.yml
    提交移动到底部(如果有多个提交,则使用第一个提交挤压所有提交)
  • 然后切换到
    master
    并合并
    dev
    的父级:
    git merge dev^

每次合并只需做一点工作,您就可以在dev分支中的
mongoid.yml
上释放更改的历史记录,但它应该可以工作。

您希望创建一个dev分支,然后检查它。将配置文件更改为所需的格式。切换回另一个分支

git merge -s ours dev
这将忽略您在dev分支中所做的操作,但仍然会在历史记录中标记这些更改,就好像这些更改已经被合并一样。从现在起,当您与dev分支合并时,您的配置将保持您所需要的状态。这是设立发展分部的正确方式


希望这有帮助。

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

使用以下内容创建
.gittributes
文件:

mongoid.yml merge=ours
然后,当合并过程中此文件发生冲突时,将保留旧文件


更多信息和。

如果您稍后更改文件(在dev或master中),会发生什么情况?感谢adymitruk,我将使用Michaël Witrant's,因为他的示例中的链接似乎直接解决了我的问题。我想这就做到了,链接一的解释基本上是我的问题本身:避免数据库配置文件被另一个分支覆盖,因为它们使用不同的数据库表。谢谢米切尔