【问题标题】:git on Mac sees files I havent touched as modified and they also appear as staged alreadyMac 上的 git 将我未触及的文件视为已修改,并且它们也显示为已上演
【发布时间】:2019-06-05 16:41:33
【问题描述】:

我在使用 git 的 Mac 上看到了奇怪的行为。我没有在 Windows 上看到这种情况。在 mac 上使用 git v 2.19.1,在 windows 上使用 2.18.0.windows.1。

我在一个跨平台团队工作,所以我们中的一些人使用 Windows,其他人使用 Mac。我两个都用。

这是我看到的场景:

我在我的功能分支上工作了几天,并希望确保我用远程上的最新更改更新我的分支,所以我总是在最新版本的远程上工作。因此,我每天都会执行以下操作以减少发生冲突的机会并使用最新版本:

git checkout develop
git fetch origin
git merge origin/develop 
git checkout my-feature
git merge develop 

完成后,我将更改应用到 my-feature 分支,但我注意到 git 在 Mac 上的行为非常奇怪。这是发生了什么:

  • 我添加了一些更改

  • 我还没有发布任何东西,所以没有发布git add .

  • 我使用git status 并看到很多文件,好像它们已被我修改和暂存,即使我既没有修改也没有暂存它们。

例如,git status 将我的 .gitignore 文件现在显示为:

me$ git status
On branch my-feature
Your branch is up to date with 'origin/my-feature'.

Changes to be committed:
  new file:  .gitignore

在 Windows 上,这不会发生,因为我没有修改此文件,所以它根本不会显示在 git status 中。我修改后的文件显示需要添加,这是它的行为方式。

为什么我从未接触过的文件会在 Mac 上被 git 查看为以某种方式修改和暂存?

【问题讨论】:

  • 我认为 MacOS 的 Git 发行版存在问题,因为很多人都报告了奇怪的错误。它们似乎都有一个共同点,即索引(也称为“暂存区”)正在损坏。

标签: windows git macos


【解决方案1】:

在混合开发环境中(就像我也工作一样),当“行尾”不匹配时,我会看到这种行为。解决此问题的最佳方法是更新您的 .gitconfig 文件。

我鼓励我所在团队的每个人将以下内容添加到他们的.gitconfig 文件中。您可以向每个 repo 添加 .gitconfig,就像 .gitignore 一样,和/或每个开发人员都可以在他们的 git 全局配置文件中设置它。

[text]
   eof=lf

有不同的选择,但关键是整个团队在提交和拉取时使用相同的行尾。

这是我的 gitconfig,根据下面的请求。

[User]
    name = Ben Horgen
    email = xxx@xxxxxxxx.com
[text]
    eof=lf
[core]
    autocrlf = input    
[pull]
    rebase = true
[push]
    default = simple

【讨论】:

  • 即使在 Windows 上也要设置 eof=lf?
  • 我鼓励是的!为什么有两个字符代表一个行结束时一个行...但是当然使用'eof = cflf`在解决您的问题方面同样有效(如果您更喜欢Windows风格的行结尾)。 Windows 上的所有现代编辑器都可以很好地处理“linux”样式的行尾。但是在后面的情况下,您在 Windows 计算机上的开发工具不喜欢它...使用 'eof=cflf` 是一个不错的选择。
  • 您在混合开发环境(Mac、Windows)中工作,并且两台机器上的所有开发人员都将 eof 设置为 LF?你能提供你的 .gitconfig 吗?另外,您是否可以自信地说,在你们都使用 LF 之前,您遇到了我上面报告的问题,并且在您添加 eof=LF 之后,该问题不再出现?我之所以如此小心,是因为我们在世界各地都有团队,任何这样的变化都会引起很多干扰。再次感谢
  • 我可以向您保证,我们遇到了确切的问题。此外,我个人在同一台笔记本电脑上同时运行 Windows 和 MacOS(在 Macbook 上使用 Parallels)。但其他工程师只是 Windows。我可以确认这不会影响您的工程师,如果他们正在使用:Notepad++、Visual Studio、VS Code、Atom 和大多数其他流行的 IDE/编辑器......包括 Vi。我会在我的回答中附上我的 .gitconfig。
猜你喜欢
  • 2014-04-25
  • 2023-03-20
  • 2011-09-09
  • 2021-07-28
  • 1970-01-01
  • 2012-04-02
  • 2011-06-27
  • 2010-12-07
  • 2015-11-29
相关资源
最近更新 更多