cygwin git status 和 tortoise git commit 显示不同的变化

cygwin git status 和 tortoise git commit 显示不同的变化

在我的 Win7 Pro 64 位机器上,我有 TortoiseGit 和带有 git 的 cygwin。如果我尝试查找待处理的更改,我会从 cygwin 和 TortoiseGit 获得不同的结果。我确信 cygwin git 的结果是错误的。

为什么 cygwin 上的 git 会报告所有这些文件已更改,即使我没有碰过它们?

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")

答案1

我怀疑是行尾。如果 Tortoise git 像其他原生 Windows 版本控制客户端一样工作,它会自动将回车符添加到签出的文件,并且知道在与存储库中的文件进行比较时再次删除它们。Cygwin git 是一个优秀的 Unix 公民,不会做任何这样的事情,因此它将 Tortoise 添加的那些回车符视为修改。

这个故事的寓意是:对于任何特定的签出,请坚持使用 Tortoise git 或 Cygwin git,否则您最终会得到糟糕的行尾混合。不要混合客户端的另一个原因是它们在 .git 目录中存储内容的方式可能有所不同。

(同样的建议也适用于其他版本控制系统。)

答案2

我最初以为是空格,但你那里也有一些 .png。

可能是文件模式改变了。尝试一下;

git config core.filemode false

如果这不起作用并且唯一的区别是更改时间戳,您可以尝试;

git config core.trustctime false

(当然,您可以通过重复该命令将 false 改为 true 来撤消上述任一操作)

答案3

TortoiseGit < 1.8.13.0 不支持 Cygwin Git。您需要一个较新版本

1)选择[CYGWIN-INSTALL-PATH] \bin-folder 作为git.exe文件夹。

2) 在 Windows 中配置 HOME 环境变量,以便 Cygwin 和 TortoiseGit 使用相同的主目录和全局 git-config。此处使用正常的 Windows 表示法(例如,“C:\Users\USERNAME”)。默认情况下,TortoiseGit 使用 Windows 主目录(通常位于 c:\Users 下),而 Cygwin 使用其自己的主目录(位于 [CYGWIN-INSTALL-PATH]\home 下)。

3) 配置 AutoCrLf,这是必需的,因为 TortoiseGit 和 Cygwin Git 具有不同的默认值。Cygwin Git 中的默认值为 true。

4) 转到 TortoiseGit 的“高级设置”部分,并将 CygwinHack 设置为 true,以激活 cygwin 解决方法。

5)重新启动。

基于https://tortoisegit.org/docs/tortoisegit/tgit-dug-settings.htmlhttps://tortoisegit.org/issue/56

相关内容