git-切换到本地开发,然后返回功能分支以重置已修改/添加的文件的状态

时间:2018-11-15 19:18:06

标签: windows git macos

我在功能分支中添加了一些更改,进行了暂存,提交并使用push -u git命令将其推送到了原点。

第二天,我更新了本地开发和功能分支,以使用标准git fetch / git merge程序从远程获取最新代码。

这时,我看到了一些有趣的东西:

我在功能分支上,git status告诉我一切都很好,这是正确的

我切换到开发分支,git status显示一切正常,这是正确的

我切换回功能分支,git status报告我之前已推送到远程一天的所有更改,如下所示:

  1. 已暂存(绿色)-我的更改已被删除(将某些文件标记为可以提交)。现有文件被标记为已修改,并且我的更改从其中删除。我添加的文件被标记为已删除,
  2. 没有暂存(紫色)-我在推送过程中修改了现有项目文件,
  3. 未跟踪(红色)-作为我在上面的推送操作的一部分,我将新文件添加到了项目中。

我不明白为什么会这样,但是应该不会。

如果我发出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的其他团队成员设置。

1 个答案:

答案 0 :(得分:1)

首先,确保git config core.autocrlf始终 设置为false(在Windows或Mac上)。
您可能需要的任何EOL转换都应在.gitattributes eol attribute中完成。

然后在两个平台上的仓库中检查您的git config -lcontent filter driver可能是在提交时自动修改的示例,而在其他平台上可能没有声明。