Состояние git cygwin и коммит git черепахи показывают различные изменения
На моей 64-битной машине Win7 Pro у меня есть TortoiseGit и cygwin с git. Если я пытаюсь найти ожидающие изменения, я получаю разные результаты от Cygwin и TortoiseGit. Я уверен, что результат Cygwin Git не так.
Почему git на cygwin сообщает, что все эти файлы изменились, даже если я их не трогал?
Вывод 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