我克隆了一个 git 存储库,紧接着我就在
git status
中获得了未跟踪和未暂存(修改/删除)的文件。然后我为 Mac 设置 fileMode=false,并且有几个文件不再处于未暂存状态。但我不明白该如何对待其他人。我已经从 stackoverflow 和其他地方尝试了很多东西,但没有任何帮助。
所以我的问题是为什么我在克隆存储库后立即得到所有这些未跟踪/未暂存的文件,以及如何修复它。我使用 Mac 进行开发,但我尝试在 Windows 中克隆存储库,看看是否相同。更有趣的是:它说一些未暂存的文件已删除。
对 git config 进行不同修改后,命令
git config -l
看起来像这样:
麦克:
filter.lfs.clean=git-lfs clean %f
filter.lfs.smudge=git-lfs smudge %f
filter.lfs.required=true
user.email=...hidden...
user.name=...hidden...
core.autocrlf=true
core.precomposeunicode=true
core.filemode=false
core.trustctime=false
alias.gr=log --graph --full-history --all --color --decorate
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
remote.origin.url=https://bitbucket.org/...hidden...
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.demo.remote=origin
branch.demo.merge=refs/heads/demo
获胜:
core.symlinks=false
core.autocrlf=true
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
help.format=html
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
diff.astextplain.textconv=astextplain
rebase.autosquash=true
credential.helper=manager
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
remote.origin.url=https://bitbucket.org/...hidden...
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.demo.remote=origin
branch.demo.merge=refs/heads/demo
我的
git status
看起来像这样:
麦克:
获胜:
如何解决?
好吧,经过一段时间的研究这个问题,我在this帖子(Christoph也提到过)中找到了两个解决方案,那就是
filemode=false
和小写双胞胎。但未跟踪的文件仍然存在。然后我了解到这些未跟踪的文件的文件名中包含 UTF8 字符,并且这些字符在某些地方被文件系统和/或 git 误解了。我查看了这些文件,发现它们不再是实际的,所以我只是删除它们并提交了此删除。
由于 https://git-scm.com/docs/git-config#Documentation/git-config.txt-coreprecomposeUnicode,我从 Windows 切换到 Mac 时遇到了 unicode 字符问题。
请注意,git clean 将删除存储库中所有未跟踪和修改的文件,因此请确保在运行以下命令之前保存您的工作。这一系列的操作最终为我解决了这个问题,并停止使用编码字符重命名文件。
git clean -xdf
git config --local core.precomposeunicode false
git reset --hard origin/main
运行时
git status
您的存储库应该有一个干净的工作树。