【问题标题】:Git status reports changed files when nothing have been changed on merge当合并时没有任何更改时,Git 状态报告更改的文件
【发布时间】:2016-11-16 17:12:21
【问题描述】:

我有一个 git 存储库,其中包含 1350 多个提交和多个分支。每次我想从 Github 中提取一些更改时,我都会陷入一堆文件被修改但没有被修改的情况。它们总是相同的,我可以放弃这些“更改”,直到我以不同的顺序随机运行“git checkout”和“git reset”命令。

有人知道发生了什么吗?存储库的大小可以吗?如果是的话,我能做些什么来减少大小,比如删除旧的提交或类似的东西?

任何帮助将不胜感激。

问候

编辑:

当我从 master 拉取时也会发生此问题。这就是我重现此问题的方式:

  1. 我在本地仓库中提交了一个文件
  2. repo 是干净的,没有任何待提交的内容。
  3. 我先拉取远程获取最新更改
  4. Git 报告某些更改将被合并覆盖,但这些文件在我的提交或远程待处理的提交中没有更改。

即使我的同事使用与我相同的操作系统(我使用的是 Ubuntu),此问题也会随机发生。

【问题讨论】:

  • git status 在你尝试拉之前说了什么?
  • 在这种情况下,最常见的罪魁祸首之一是不同的行尾约定,并且没有相应地设置适当的git 配置选项。
  • @bcmcfc 它说什么都不需要提交,这就是我问这个问题的原因
  • @twalberg 您认为哪些选项需要正确设置?
  • @Vistiyos 这取决于有哪些行尾差异(Windows 与 Linux,或 Windows 与 Mac,或 Mac 与 Linux,甚至其他一些混合)。但是请参阅git help config 并查看诸如core.eolcore.autocrlfcore.safecrlfcore.whitespace 之类的内容。可能还有其他几个,但我记得的那些。

标签: git github version-control


【解决方案1】:

一堆文件被修改肯定是out-sync造成的,换句话说,本地仓库和GitHub上远程的提交历史不同。在从远程拉取之前,您需要验证以下步骤:

  1. git fetch,从远程获取并放入.git文件夹,对你本地repo工作目录和stage区没有影响
  2. 将本地分支切换到 A,git checkout A
  3. 查找存在于本地分支 A 但不在远程分支 origin/A 中的同步提交。 git log origin/A..A,如果命令后有输出,则需要先将更改推送到远程,然后再执行这些步骤。
  4. 查找存在于远程分支 origin/A 但不存在于本地分支 A 中的 out-sync 提交。git log A..origin/A,如果在命令后有输出,则表示您需要从远程拉取。

注意:在远程拉取之前,请确保 step3 没有输出。

【讨论】:

  • 当我从主人那里拉出来时也会发生这种情况,抱歉我忘了把它添加到我原来的问题中。
  • 您是否比较了\.git\refs\heads\master\.git\refs\remotes\origin\master 的SHA-1 值?如果值相同,则不应修改 master 分支中的文件。
  • 但是如果我的本地仓库中没有远程的更改,它应该会有所不同,不是吗?
  • 是的,很抱歉造成误解。我的意思是在git fetch 之后他们应该保持不变。所以更改的文件可能是由远程拉取更改引起的。
  • @Vistiyos,嗨,到目前为止,您解决了这个问题吗?如果答案有帮助,请标记它,否则,您可以写一个对您有帮助的答案并在 24 小时后标记它。这对有类似问题的其他人会有所帮助。
猜你喜欢
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 2015-11-14
  • 2014-11-25
相关资源
最近更新 更多