git на Mac видит файлы, к которым я не прикасался, измененными, и они также отображаются как уже подготовленные - PullRequest
0 голосов
/ 10 января 2019

Я вижу странное поведение на Mac с git. Я не вижу, что это происходит в Windows. Использование git v 2.19.1 на Mac и 2.18.0.windows.1 на windows.

Я работаю в кроссплатформенной команде, поэтому некоторые из нас используют Windows, другие - Mac. Я использую оба.

Вот сценарий, который я вижу:

Я работаю над своей веткой функций в течение нескольких дней и хочу убедиться, что я обновляю свою ветку последними изменениями на удаленном компьютере, поэтому я всегда работаю с самой последней версией удаленного. Итак, я ежедневно делаю следующее, чтобы уменьшить вероятность конфликтов и остаюсь на самой последней версии:

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

Как только это будет сделано, я применяю свои изменения к моей ветке Feature-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 вообще. Мои измененные файлы отображаются по мере необходимости, что и должно быть добавлено.

Почему файлы, которые я никогда не трогал, были просмотрены git на Mac как-то модифицированные и подготовленные?

1 Ответ

0 голосов
/ 10 января 2019

В смешанных средах разработки (как я тоже работаю) я вижу такое поведение, когда «окончания строк» ​​не совпадают. Лучший способ решить эту проблему - обновить файл .gitconfig.

Я призываю всех в командах, в которых я работаю, добавить следующее в свой файл .gitconfig. Вы можете добавить .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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...