Состояние git cygwin и коммит git черепахи показывают различные изменения

На моей 64-битной машине Win7 Pro у меня есть TortoiseGit и cygwin с git. Если я пытаюсь найти ожидающие изменения, я получаю разные результаты от Cygwin и TortoiseGit. Я уверен, что результат Cygwin Git не так.

Почему git на cygwin сообщает, что все эти файлы изменились, даже если я их не трогал?

Вывод TortoiseGit (правильный):Выход TortoiseGit

Вывод cygwin git (неверный):

$git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   .classpath
#   modified:   .gitignore
#   modified:   belipro.xml
#   modified:   etc/buildnum.properties
#   modified:   etc/db/adjust.sql
#   modified:   etc/db/update11.sql
#   modified:   etc/db/update12.sql
#   modified:   etc/excel-template/Anlagen.xls
#   modified:   etc/projektierbareTemplaes/templateA.rtf
#   modified:   etc/test/belipro.sql.zip
#   modified:   lib/commons-lang-2.6.jar
#   modified:   lib/jacob-1.14.3-x86.dll
#   modified:   lib/jacob.jar
#   modified:   res/ch/pp/belimed/bo/planung/ArbeitsStundenResourcePack.java
#   modified:   res/ch/pp/belimed/bo/planung/AufgabeAuftragResourcePack.java
#   modified:   res/ch/pp/belimed/bo/planung/AufgabeResourcePack.java
#   modified:   res/ch/pp/belimed/bo/planung/arbeitsstunden 32x32.png
#   modified:   res/ch/pp/belimed/bo/planung/arbeitsstunden 64x64.png
#   modified:   res/ch/pp/belimed/bo/planung/aufgabe 32x32.png
#   modified:   res/ch/pp/belimed/bo/planung/aufgabe 64x64.png
#   modified:   res/ch/pp/belimed/bo/planung/aufgabeauftrag 32x32.png
#   modified:   res/ch/pp/belimed/bo/planung/aufgabeauftrag 64x64.png
#   modified:   res/ch/pp/belimed/bo/projekt/DruckbehaelterResourcePack.java
#   modified:   res/ch/pp/belimed/bo/projekt/EldResourcePack.java
#   modified:   res/ch/pp/belimed/bo/projekt/WtdResourcePack.java
#   modified:   res/ch/pp/belimed/bo/projekt/druckbehaelter 32x32.png
#   modified:   res/ch/pp/belimed/bo/projekt/druckbehaelter 64x64.png
#   modified:   res/ch/pp/belimed/bo/projekt/eld 32x32.png
#   modified:   res/ch/pp/belimed/bo/projekt/eld 64x64.png
#   modified:   res/ch/pp/belimed/bo/projekt/projektierbar 32x32.png
#   modified:   res/ch/pp/belimed/bo/projekt/projektierbar 64x64.png
#   modified:   res/ch/pp/belimed/bo/projekt/wtd 32x32.png
#   modified:   res/ch/pp/belimed/bo/projekt/wtd 64x64.png
#   modified:   res/ch/pp/belimed/bo/util/BatchResourcePack.java
#   modified:   res/ch/pp/belimed/bo/util/TypResourcePack.java
#   modified:   res/ch/pp/belimed/explorer/BeliproExplorerComponentFactoryResourcePack.java
#   modified:   res/logging.properties
#   modified:   src/ch/pp/belimed/bo/planung/Aufgabe.java
#   modified:   src/ch/pp/belimed/bo/planung/AufgabeAuftrag.java
#   modified:   src/ch/pp/belimed/bo/planung/Auftrag.java
#   modified:   src/ch/pp/belimed/bo/planung/InternerAuftrag.java
#   modified:   src/ch/pp/belimed/bo/planung/Meilenstein.java
#   modified:   src/ch/pp/belimed/bo/planung/MeilensteinTyp.java
#   modified:   src/ch/pp/belimed/bo/planung/MitarbeiterAuftrag.java
#   modified:   src/ch/pp/belimed/bo/planung/Planung.java
#   modified:   src/ch/pp/belimed/bo/planung/Sammelauftrag.java
#   modified:   src/ch/pp/belimed/bo/projekt/ProjektStatus.java
#   modified:   src/ch/pp/belimed/bo/util/Batch.java
#   modified:   src/ch/pp/belimed/bo/util/Bezeichnung.java
#   modified:   src/ch/pp/belimed/explorer/BeliproExplorerComponentFactory.java
#   modified:   src/ch/pp/belimed/ui/planung/AufgabeSearchPanel.java
#   modified:   src/ch/pp/belimed/ui/planung/InternerAuftragDetailPanel.java
#   modified:   src/ch/pp/belimed/ui/planung/MitarbeiterAuftragDetailPanel.java
#   modified:   src/ch/pp/belimed/ui/planung/MitarbeiterDetailPanel.java
#   modified:   src/ch/pp/belimed/ui/projekt/AnlageSearchPanel.java
#   modified:   src/ch/pp/belimed/ui/projekt/KundeSearchPanel.java
#   modified:   src/ch/pp/belimed/ui/projekt/PlanungAssigner.java
#   modified:   src/ch/pp/belimed/ui/util/BatchDetailPanel.java
#   modified:   src/ch/pp/belimed/util/DbVersion.java
#   modified:   src/ch/pp/belimed/util/ReleaseInfo.java
#   modified:   src/ch/pp/util/DateUtils.java
#   modified:   test/ch/pp/belimed/bo/planung/AufgabeTest.java
#
no changes added to commit (use "git add" and/or "git commit -a")

3 ответа

Решение

Я бы заподозрил окончание строк. Если Tortoise git работает как другие нативные клиенты контроля версий Windows, он автоматически добавляет возврат каретки к извлеченным файлам и знает, как удалить их снова при сравнении с файлами в хранилище. Cygwin git, будучи хорошим гражданином Unix, не делает ничего подобного, поэтому он видит те возвраты каретки, которые Черепаха добавила как модификации.

Мораль истории: для любой конкретной проверки, придерживайтесь либо черепашьего мерзавца, либо мерзавца мерзавца, иначе у тебя получится ужасное сочетание концовок строк. Другая причина не смешивать клиентов заключается в том, что они могут иметь различия в том, как они хранят вещи в каталоге.git.

(Практически тот же совет относится и к другим системам контроля версий.)

Сначала я думал, что пробел, но у вас там тоже есть некоторые.pngs.

Возможно, это изменения режима файла. Пытаться;

git config core.filemode false

Если это не сработает, и если единственная разница - это отметка времени изменения, вы можете попробовать;

git config core.trustctime false

(Конечно, вы можете отменить любой из них, повторив команду, изменив значение false на true)

TortoiseGit < 1.8.13.0 не поддерживает Cygwin Git. Вам нужна более новая версия.

1) Выберите папку [CYGWIN-INSTALL-PATH]\bin-folder как папку git.exe.

2) Настройте переменную среды HOME в Windows, чтобы Cygwin и TortoiseGit использовали один и тот же домашний каталог и глобальный git-config. Используйте обычную запись Windows (например, "C:\Users\USERNAME"). По умолчанию TortoiseGit использует домашний каталог Windows, который обычно находится в каталоге c:\Users, а Cygwin использует свои собственные домашние каталоги, которые находятся в каталоге [CYGWIN-INSTALL-PATH] \ home.

3) Настройте AutoCrLf, это необходимо, поскольку TortoiseGit и Cygwin Git имеют разные значения по умолчанию. По умолчанию в Cygwin Git это правда.

4) Перейдите в TortoiseGit, раздел "Расширенные настройки" и установите CygwinHack в true, чтобы активировать обходные пути cygwin.

5) перезагрузка.

Основано на https://tortoisegit.org/docs/tortoisegit/tgit-dug-settings.html и https://tortoisegit.org/issue/56

Другие вопросы по тегам