почему в моей виртуальной машине статус git будет другим? - PullRequest
0 голосов
/ 15 марта 2012

У меня есть общая папка, которая является моим приложением Rails.Я редактирую код в RubyMine в Win7 и запускаю сервер на виртуальной машине Linux.Эта настройка работает отлично.Я всегда делал все свои коммиты / ветвления / и т.д. в Win, обычно из RubyMine или GitBash.

Однако сегодня я сделал git status в GitBash в Win7, а также в linux vm.Результаты были совершенно разными.

# git bash win 7
$ git status
# On branch master
nothing to commit (working directory clean)

# linux 
~/app> git status
# On branch master
# Changes not staged for commit:
#
#   modified:   .dbshell
#   modified:   .gitignore
# etc... 50 more entries...

Я предполагал (неправильно я полагаю), что состояние git будет поступать из файла в каталоге .git.Похоже, этого не происходит, поскольку файлы будут одинаковыми в обеих ОС.Итак:

  1. как git status решает, какие файлы в его списке?
  2. почему git status будет отличаться в ВМ?

Ответы [ 2 ]

0 голосов
/ 29 марта 2016

У меня похожая проблема с использованием Ubuntu и работой с Windows 7 на виртуальной машине. Следуя совету Итана, я решил, настроив для свойства core.autocrlf значение true в моей Ubuntu с помощью следующей команды:

git config --global core.autocrlf true
0 голосов
/ 16 марта 2012

Я не знаю наверняка, как diff определяет, какие файлы находятся в списке, но я предполагаю, что он сначала сравнивает хэши SHA-1 двух файлов; если они одинаковые, файлы не изменились. Если они различаются, он запускает diff, чтобы увидеть, являются ли различия значительными (то есть он может игнорировать проблемы с окончанием строки и т. Д.).

Я предполагаю, что это проблема с окончанием строки. В Windows diff не видит проблем с окончаниями строк CRLF, но в Linux он помечает файлы как разные. Свойства Git, на которые вы хотите посмотреть, это core.whitespace (документация здесь: http://progit.org/book/ch7-1.html). Проверьте, как он настроен на каждой ОС (git config -l). Что вам, вероятно, нужно, чтобы он имел cr-at-eol опция установлена.

...