使用Atlassian SourceTree将远程 git 存储库克隆到本地框。即使工作树中没有真正修改过文件,Atlassian 也会立即在“未提交的更改”下列出一堆文件。每个文件在删除和添加时都显示相同的行数,并且此计数等于文件中的总行数。这会以某种方式暗示我们遇到了某种行尾问题。
但是,存储库.gitattribute
包含
# Set default behaviour, in case users don't have core.autocrlf set.
* text=auto
根据 GitHub 文章处理行尾应该明确地core.autocrlf
适用于存储库。不过也~/.gitconfig
包含autocrlf = true
。
如果尝试将修改后的文件“还原”回之前的提交,则没有效果。相同的文件仍被视为未提交。
存储库已被克隆到多个位置,并确保没有文件位于同一路径中,以确保 SourceTree 或 git 不会记住旧文件。
该存储库与 Windows、Linux 和 OSX 机器协作。此问题仅出现在 OSX 中。
SourceTree/repository/git 设置中还有什么问题?
更新 #1,2013 年 4 月 20 日
由于仍有问题,这里是部分输出git config --list
。
从 SourceTree 控制台 (OSX)
core.excludesfile=/Users/User/.gitignore_global
core.autocrlf=input
difftool.sourcetree.cmd=opendiff "$LOCAL" "$REMOTE"
difftool.sourcetree.path=
mergetool.sourcetree.cmd=/Applications/SourceTree.app/Contents/Resources/opendiff-w.sh "$LOCAL" "$REMOTE" -ancestor "$BASE" -merge "$MERGED"
mergetool.sourcetree.trustexitcode=true
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.autocrlf=true
以下是 Windows 端的相应输出:
core.symlinks=false
core.autocrlf=false
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
http.proxy=
core.autocrlf=true
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
core.hidedotfiles=dotGitOnly
core.eol=native
core.autocrlf=true
并且完整.gitattributes
的有问题的存储库
# Set default behaviour, in case users don't have core.autocrlf set.
* text=auto
*.php text
*.twig text
*.js text
*.html text diff=html
*.css text
*.xml text
*.txt text
*.sh text eol=lf
console text
*.png binary
*.jpg binary
*.gif binary
*.ico binary
*.xslx binary