Git “合并”将覆盖i';I’我已标记为“假定无更改”

Git “合并”将覆盖i';I’我已标记为“假定无更改”,git,Git,我有一个app.config文件,我已经标记为——假设没有更改 git update-index --assume-unchanged <file> git更新索引--假定未更改 一切都很好 但每次我将develop(我们都创建拉入请求的主工作分支)合并到我的分支中时,它都会覆盖该文件 如果文件发生更改,我预计会发生这种情况。但自从第一次提交以来,就没有发生过 文件可能(很少)发生更改,因此我不想将其添加到.gitignore 我通过创建“合并驱动程序”找到了一种方法。如图所示

我有一个app.config文件,我已经标记为——假设没有更改

git update-index --assume-unchanged <file>
git更新索引--假定未更改
一切都很好

但每次我将develop(我们都创建拉入请求的主工作分支)合并到我的分支中时,它都会覆盖该文件

如果文件发生更改,我预计会发生这种情况。但自从第一次提交以来,就没有发生过

文件可能(很少)发生更改,因此我不想将其添加到.gitignore

我通过创建“合并驱动程序”找到了一种方法。如图所示


我希望有一种更简单的方法。

在进行任何更改之前,请确保将其标记为未更改

更新索引之前的文件
将其更新为
——假设未更改
您希望它与分支中存在的文件匹配,您希望它与之“相等”

因此,试试看

  • git更新索引--不假设文件未更改
  • 将其更改为与分支上的文件匹配
  • git更新索引--假定文件未更改
  • 把它改成你喜欢的

  • 您确定
    假定未更改
    文件与分支上的文件完全匹配吗?你能
    diff
    他们吗?@Nizar-develop上的文件和我的分支上的文件(合并前)不匹配。问题是它们在合并后会匹配。是的,我知道它们不会匹配,因为您
    假定它没有更改,所以您可能在那时对它做了一些更改。但在对其进行任何更改之前,它应该与存储的文件相匹配。因此,如果您
    git diff
    分支,则不应列出该文件。但是如果是这样的话,我想,您需要
    不假定已更改
    ,然后使它们再次匹配,
    假定未更改
    ,然后再次更改文件。如果这样做没有帮助,很抱歉,但我正在尝试将您的案例与我的案例联系起来。我希望--假设在您想要执行索引操作(添加、差异、状态)时,unchange可以工作。。。然后,它假定该文件未更改。。。。但是,当您进行合并时,这不是与索引相关的操作。但这只是我对为什么会发生这种情况的猜测。@Nizar-这很有效!总之,在对文件进行更改之前,需要标记--ASSUBE UNCHANDED