使用bash在Windows XP计算机上运行git.我从SVN导出了我的项目,然后克隆了一个裸存储库.
然后我将导出粘贴到裸存储库目录中,并执行了:
git add -A
Run Code Online (Sandbox Code Playgroud)
然后我得到一条消息列表:
LF将由CRLF取代
这种转变的后果是什么?这是Visual Studio中的.NET解决方案.
之后git init,我添加并提交了一些文件,进行了一些更改,添加并提交.设置git守护程序(在WinXP上的Cygwin下运行)并克隆一次存储库.现在,我在克隆的存储库中收到此错误:
$ git status
error: bad index file sha1 signature
fatal: index file corrupt
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题,除了获取存储库的新副本?
是否有文件或菜单可以让我更改如何处理行结尾的设置?
有3种选择:
结帐Windows风格,提交Unix风格
签出文本文件时,Git会将LF转换为CRLF.提交文本文件时,CRLF将转换为LF.对于跨平台项目,这是Windows上的推荐设置("core.autocrlf"设置为"true")
Checkout as-is,提交Unix风格
签出文本文件时,Git不会执行任何转换.提交文本文件时,CRLF将转换为LF.对于跨平台项目,这是Unix上的推荐设置("core.autocrlf"设置为"input").
按原样结帐,按原样提交
签出或提交文本文件时,Git不会执行任何转换.不建议跨平台项目选择此选项("core.autocrlf"设置为"false")
我想强制git在Windows下检出文件LF而不是CR+LF.我检查了两个配置选项,但我无法找到正确的设置组合.
我希望它将所有文件转换为LF并保留LF文件.
备注:我使用autocrlf = input但是这只是在你提交时修复文件.我想强制它让他们使用LF.
可能我不是那么清楚:存储库已经在使用LF但是使用msysgit检出的文件正在使用CR+LF,我想强制msysgit使用它们LF:强制Unix行结束.
>git config --list | grep crlf
core.autocrlf=input
Run Code Online (Sandbox Code Playgroud) 我有一个从Windows和OS X访问的Git存储库,我知道已经包含一些带有CRLF行结尾的文件.据我所知,有两种方法可以解决这个问题:
设置core.autocrlf到false无处不在,
按照指示在这里(回荡在GitHub上的帮助页)到存储库转换为只包含LF行结束,然后设置core.autocrlf要true在Windows和input在OS X上有这样做的问题是,如果我有仓库中任何二进制文件那:
他们会被腐化.我的存储库可能包含这些文件.
那么为什么我不应该关闭Git的行结束转换呢?网上有很多模糊的警告关于core.autocrlf关闭造成问题,但很少有具体问题; 到目前为止我唯一发现的是kdiff3无法处理CRLF结尾(对我来说不是问题),而且一些文本编辑器有行结束问题(对我来说也不是问题).
存储库是我公司的内部存储库,因此我不需要担心与具有不同autocrlf设置或行结束要求的人共享它.
是否有任何其他问题只是留下我不知道的行结尾?
Visual Studio偶尔会告诉我:
以下文件中的行结尾不一致.你想要标准化行结尾吗?
然后它给我一个不同标准或类似的下拉菜单,如Windows,Mac,Unix和几个Unicode.
这意味着什么,如果我点击会发生Yes什么?
我现在遇到了一个存储库问题,虽然我的git-fu通常很好,但我似乎无法解决这个问题.
当我克隆这个存储库,然后cd进入repo时,git-status会显示几个已更改的文件.注意:我没有在任何编辑器或任何东西中打开回购.
我尝试按照本指南:http://help.github.com/dealing-with-lineendings/但这对我的问题没有任何帮助.
我尝试了cd很多次,但似乎没有做任何事情.
任何帮助/想法将不胜感激
更新1:我在Mac上,并且repo本身没有子模块.
更新2:文件系统是mac上的"Journaled HFS +"文件系统,不区分大小写.这些文件是一行的,每个大约79K(是的,你听到了),所以看看git status并不是特别有用.我听说过git checkout -- .这可能会有所帮助,当我回到计算机上时,我会尝试使用它.
更新3:用事实更改文件系统的细节!而且,我尝试了git diff一些效果不佳的技巧.
我从其他人那里收到了git checkout,并尝试将未分级的更改提交到本地存储库.但是,即使内容完全相同,很多(如果不是每个)文件也会显示为已修改.
我已经设置core.fileMode为false并且设置core.autocrlf为false,但没有成功.
值得一提的是,我收到的Git repo来自使用Windows的人,而我使用的是Linux.
如何进行实际更改?
编辑:输出git config -l:
user.name=Aron Rotteveel
user.email=<removed>
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=auto
color.ui=true
color.pager=true
color.branch.current=yellow reverse
color.branch.local=yellow
color.branch.remote=green
color.diff.meta=yellow bold
color.diff.frag=magenta bold
color.diff.old=red bold
color.diff.new=green bold
color.status.added=yellow
color.status.changed=green
color.status.untracked=cyan
core.pager=less -FRSX
core.whitespace=fix,-indent-with-non-tab,trailing-space,cr-at-eol
alias.co=checkout
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
core.hidedotfiles=dotGitOnly
core.autocrlf=false
remote.origin.url=<removed>
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)
更新:添加了一些随机示例文件.这些文件只是纯文本,因此最容易包含.
原始文件位于:https://gist.github.com/c3c5302430935155ef3d.Hexdumps肯定表明文件不同,但我不知道是什么导致这个,以及如何解决它.
HEAD版本:
0000000: 4854 4d4c 2e53 6166 654f 626a 6563 740d HTML.SafeObject.
0000010: 0a54 5950 453a …Run Code Online (Sandbox Code Playgroud) 以下情况:
我正在使用运行OS X的Mac,最近加入了一个项目,其成员到目前为止都使用Windows.我的第一个任务之一是在Git存储库中设置代码库,所以我从FTP中提取目录树并尝试将其检入我本地准备的Git仓库.在尝试这样做的时候,我得到的就是这个
fatal: CRLF would be replaced by LF in blog/license.txt.
Run Code Online (Sandbox Code Playgroud)
因为这会影响"blog"文件夹下面的所有文件,所以我正在寻找一种方法,可以方便地将树中的所有文件转换为Unix行结尾.是否有一个开箱即用的工具或者我自己编写脚本?
作为参考,我的Git配置有关行结尾:
core.safecrlf=true
core.autocrlf=input
Run Code Online (Sandbox Code Playgroud) 大部分.gitattributes文件都有* text=auto.text=auto该文件的目的是什么?