当 git 说一个文件“需要更新”时是什么意思?

我这辈子都找不到任何合适的解释,来解释 git 有时会不时吐出的“[ file ] : need update”消息。甚至官方的 git FAQ 也将其标记为 TODO。如果有人能够解释一下: A)这是什么意思; B)如何解决这个问题,我将非常感激。

54805 次浏览

这意味着您试图从某处合并更改,但是更改包括对脏文件的修改(当前在您的工作树中修改)。您需要提交您未完成的更改,或者隐藏它们,拉取/重新定位/合并/您正在执行的任何更新操作,然后取消隐藏

正如对其他相关问题的回答所说的那样,消息只是意味着您有突出的变化。例如,如果你用 git add做了一些改变,然后改变主意,用 git reset HEAD file重新开始。

登录到您的生产/目标服务器 cd到包含您的应用程序的目录并执行这两个命令。

1. 重置为最新版本

警告,这将删除所有更改:

git reset --hard HEAD

2. 做出改变

git pull origin master

正如其他人指出的那样,需要更新消息意味着该文件是 肮脏,或者换句话说,已经过时。但不是做复位和重新开始,什么可以做的是简单的 git status,然后 git add <file> 如果它的 变了名单。因为您以前已经可以添加该文件,但是后来更改了它。这发生在我身上,通过这个简单的 add,我已经解决了这个问题。

对于不在目标分支上的文件,可能会发生此错误。

对我来说,棘手的部分是与 .gitattributes文件在我的回购。在另一个分支中添加了新的二进制文件类型,但它的处理被强制为文本文件。当通过 git 从 repo 下载文件时,EOL (实际上是二进制值字节)被替换——导致二进制差异。

添加新的条目来处理新的二进制文件类型和重试整个过程为我解决了问题。

对我来说,我一直得到

assets/ElipseThree.png: needs update
You must edit all merge conflicts and then
mark them as resolved using git add

我的目录中有这些文件,但是它们在我当前的分支中被重命名了。 所以为了弥补,我逃跑了

$ git mv assets/ElipseThree.png assets/elipseThree.png
$ git add assets/elipseHalfFull.png
$ git rebase --continue

它让我继续生活