2

На моей 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 ответа3

4

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

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

git config core.filemode false

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

git config core.trustctime false

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

3

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

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

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

1

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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .