我在功能分支中添加了一些更改,进行了暂存,提交并使用push -u git命令将其推送到了原点。
第二天,我更新了本地开发和功能分支,以使用标准git fetch / git merge程序从远程获取最新代码。
这时,我看到了一些有趣的东西:
我在功能分支上,git status
告诉我一切都很好,这是正确的
我切换到开发分支,git status
显示一切正常,这是正确的
我切换回功能分支,git status
报告我之前已推送到远程一天的所有更改,如下所示:
我不明白为什么会这样,但是应该不会。
如果我发出git add .
,则git中没有消息显示,我只是返回到终端命令。
如果我现在发布git status
,它现在表明我的功能分支是最新的,“什么也没提交,工作树很干净”。
在我的Mac上,从功能切换到开发,再开发到功能分支,就像上面描述的那样,一遍又一遍地重现同样的问题。在我的Windows计算机上执行此操作根本不会重现此问题。
因此,我的结论是我的Mac机器上的git环境出现问题。
但是后来,我也尝试在Mac上获得项目的全新克隆(由于我使用git push -u命令将所有更改都推送了它,所以现在包含了我的功能分支),然后尝试来回切换在develop和我的功能分支之间克隆的那个问题没有发生。这使它更加混乱。
看来我的Mac机器上的git无法正确更新某些内容。可能是什么以及如何进行调查?
我们是跨平台的团队,致力于Mac和Windows。我的core.autocrlf
在Mac上设置为input
,在Windows上设置为true
。我不知道core.autocrlf
的其他团队成员设置。
答案 0 :(得分:1)
首先,确保git config core.autocrlf
始终 设置为false(在Windows或Mac上)。
您可能需要的任何EOL转换都应在.gitattributes
eol
attribute中完成。
然后在两个平台上的仓库中检查您的git config -l
:content filter driver可能是在提交时自动修改的示例,而在其他平台上可能没有声明。