【问题标题】:Git pull results in "needs update" and files shown as modifiedGit pull 导致“需要更新”并且文件显示为已修改
【发布时间】:2011-09-09 22:00:36
【问题描述】:

在拉取(进入一个干净的生产类型存储库)时,所有变更集都会遇到,并导致文件看起来已修改并需要提交。 git 日志没有显示应该导致这些更改的提交...更改只是在没有日志注释的情况下拉出,因此它认为它不同步。

拉取结果显示每个文件的“需要更新”消息。

【问题讨论】:

  • 你在 windows 上使用 git 吗?通常,当 lineendings (crlf/lf) 之间的转换不能正常工作时,就会发生这些事情。 git diff 的输出是什么?如果只有行被相同的行替换,则很可能是行尾发生了变化。
  • 不。在 Mac 上。我还应该提供这是一个简单的高手拉高手。我已经使用这个 repo 有一段时间了。
  • 我在发生冲突时看到了这种行为。 Git 尝试(但失败)合并远程更改,而是将所有更改(包括上述远程更改)显示为一个重大的本地更改。
  • 相信我可能在拉取期间将其归结为权限问题(更改了我的受保护设置文件。)我收到“错误:无法取消链接旧的 'MY_SETTINGS_FILE.php'(权限被拒绝)" 但是,即使存在问题,更改也会通过并导致这种奇怪的不匹配。不得不做很多git reset --hardgit clean -fd 来收回和清理东西。仍然无法弄清楚如何允许此文件更改,因为我已经对文件和我的 .git 文件夹进行了 chmod
  • 实际上现在在一个有趣的地方我不能:更改文件权限,否则它实际上将是我需要提交或拉取的更改,因为权限拒绝它。绉纱。

标签: git git-pull


【解决方案1】:

Git project 所示,当 Git 尝试为在 Unix 上开发并在 Windows 上克隆的项目调整 eol 样式时,可能会发生这种情况:

通过 msysgit 疑难解答

在 git bash 中运行命令:git config --global core.autocrlf false 如果不这样做,则 git svn rebase 报告“需要更新”,认为源代码已更改可能会遇到提交问题

看到这个SO answer for more

【讨论】:

  • 对不起,谢谢,但我不认为是这样。我在 Mac 上,遇到的更改是对文件的实际更改(实际编辑),但 git 日志不会随历史记录更新,因此它抱怨不同步。 OOORRR 也许我只是还不明白你的答案:)
  • @doublejosh:不,您似乎已经很好地理解了我的回答。也许克里斯的评论会有所帮助?
【解决方案2】:

我是如何摆脱困境的:

当我不断尝试测试我的解决方案时,我不得不利用...

git reset --hard 将您移回日志中的最新提交。

git clean -fd 杀死自日志中最近一次提交以来未跟踪的文件。

最终我决定需要将有问题的设置文件更改为chmod 777提交权限更改。另一种选择是使用 git config core.filemode false 将 Git 更改为权限不可知模式,在此处阅读更多信息:How do I make Git ignore file mode (chmod) changes?

然后我进行了合并更改并将日志与文件一起更新,将有问题文件的权限更改回 644 并提交...并将其推回工作主机(很高兴这是允许的.)

似乎这是一个错误,权限失败允许合并文件变更集,但日志历史记录不反映提交!!!

顺便说一句:我的git --versiongit version 1.5.6.5

【讨论】:

  • 顺便说一句:这与文件权限有关。相信有时 Git 认为它没有权限并且即使认为实际更改确实发生了也会停止......所以它进入了不正确的状态。
猜你喜欢
  • 2021-07-28
  • 2019-02-28
  • 2019-04-11
  • 2021-05-10
  • 2018-09-30
  • 2019-12-25
  • 2023-03-20
  • 2019-06-05
  • 1970-01-01
相关资源
最近更新 更多