相关疑难解决方法(0)

git用CRLF代替LF

使用bash在Windows XP计算机上运行git.我从SVN导出了我的项目,然后克隆了一个裸存储库.

然后我将导出粘贴到裸存储库目录中,并执行了:

git add -A
Run Code Online (Sandbox Code Playgroud)

然后我得到一条消息列表:

LF将由CRLF取代

这种转变的后果是什么?这是Visual Studio中的.NET解决方案.

git

777
推荐指数
20
解决办法
56万
查看次数

尝试使用git filter-branch修复行结尾,但没有运气

我被git用Windows/Linux行结束问题所困扰.看来,通过GitHub,MSysGit和其他来源,最好的解决方案是让你的本地存储库设置为使用linux风格的行结尾,但设置core.autocrlftrue.不幸的是,我没有及早做到这一点,所以现在每次我进行更改时,行结尾都会被剔除.

我以为我在这里找到了答案,但我无法让它为我工作.我的Linux命令行知识充其量是有限的,所以我甚至不确定"xargs fromdos"行在他的脚本中做了什么.我不断收到关于没有这样的文件或目录的消息,当我设法将它指向现有目录时,它告诉我我没有权限.

我在Windows上通过Mac OS X终端尝试使用MSysGit.

git newline line-endings msysgit

266
推荐指数
3
解决办法
6万
查看次数

如何git reset --hard一个子目录?

更新:从Git 1.8.3开始,这将更直观地工作,请参阅我自己的答案.

想象一下以下用例:我想摆脱我的Git工作树的特定子目录中的所有更改,保留所有其他子目录.

什么是适合此操作的Git命令?

下面的脚本说明了这个问题.在How to make files注释下面插入适当的命令- 当前命令将恢复a/c/ac应该由稀疏检出排除的文件.请注意,我希望明确恢复a/aa/b,我只"知道" a,并希望下面恢复一切.编辑:我也不"知道" b,或者与其他目录位于同一级别a.

#!/bin/sh

rm -rf repo; git init repo; cd repo
for f in a b; do …
Run Code Online (Sandbox Code Playgroud)

git reset sparse-checkout git-reset

178
推荐指数
7
解决办法
12万
查看次数

如何确定Git是将文件处理为二进制还是文本?

我知道Git会以某种方式自动检测文件是二进制还是文本,如果需要,可以使用gitattributes手动设置它.但是有没有办法向GIT询问它如何处理文件?

所以我们可以说我有在这两个文件一个Git仓库:一个ascii.dat含纯文本和文件binary.dat含随机二进制的东西文件.Git将第一个dat文件作为文本处理,将辅助文件作为二进制文件处理.现在我想写一个Git webfrontend,它有一个文本文件查看器和二进制文件的特殊查看器(例如,显示十六进制转储).当然,我可以实现自己的文本/二进制检查,但如果查看器依赖于Git如何处理这些文件的信息,那将会更有用.

那么我怎么能问Git它是否将文件视为文本或二进制文件?

git

73
推荐指数
5
解决办法
2万
查看次数

gitattributes中的`*text = auto eol = lf`会怎样?

我们在.gitattributes文件中有这个:

* text=auto eol=lf
Run Code Online (Sandbox Code Playgroud)

我想准确理解这是做什么的.

第一部分是text=auto.从文档:

这确保了Git认为是文本的所有文件都将在存储库中具有规范化(LF)行结尾.

重要的是,Git仅针对它检测为文本文件的文件进行规范化.

但是,我不确定这个eol=lf部分.我认为它也将仅对文本文件进行规范化,但我在文档中找不到对它的支持,并且当我们的PNG文件也被标准化时我们有一个实例,使它们无效.

是否有像上面这样的设置基本上会说"在文本文件的两个方向上进行规范化,并单独保留二进制文件"?

git gitattributes

28
推荐指数
3
解决办法
7401
查看次数

如何在Visual Studio Code,UNIX中的所有文件中创建所有行结尾(EOL)?

我使用Windows 10 home,我通常使用Visual Studio Code(VSCODE)来编辑Linux Bash脚本以及PHP和JavaScript.

我没有开发任何专门用于Windows的东西,我不介意我编辑的所有文件的默认EOL都是Unix(nix).

在VSCODE中,如何确保所有文件中的所有EOL(来自任何文件扩展名)都是nix?


在我用VSCODE在Windows中编写了一些Bash脚本,将它们作为项目的一部分上传到GitHub之后我问了这个问题,并且审查该项目的高级程序员告诉我,那里有Windows EOL,还有我的BOM问题可以解决,如果我将那里的EOL改为nix(或者这就是我理解的,至少).


因为我的所有开发都是面向Linux的,所以我希望默认情况下,我编辑的任何文件都有nix EOL,即使它是Window唯一的.

php bash editor line-endings visual-studio-code

18
推荐指数
9
解决办法
1万
查看次数

Vagrant中的Windows CRLF到Unix LF问题

我正在使用配置一些虚拟机Vagrant.情况如下:

主持人:Windows 7(64位)

访客:Ubuntu 14.04(64位)

我有一个问题,让CRLF行结束转换为LFs.这导致共享文件夹中的bash脚本在来宾计算机中失败(参见下文).

vagrant@vagrant-host:/vagrant/bin$ sudo bash build-ubuntu-14.04.1-c
make.sh
build-ubuntu-14.04.1-cmake.sh: line 5: $'\r': command not found
build-ubuntu-14.04.1-cmake.sh: line 19: $'\r': command not found
: invalid option04.1-cmake.sh: line 21: set: -
set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
build-ubuntu-14.04.1-cmake.sh: line 22: $'\r': command not found
build-ubuntu-14.04.1-cmake.sh: line 24: $'\r': command not found
build-ubuntu-14.04.1-cmake.sh: line 26: $'\r': command not found
build-ubuntu-14.04.1-cmake.sh: line 29: $'\r': command not found
build-ubuntu-14.04.1-cmake.sh: line 36: $'\r': command not found …
Run Code Online (Sandbox Code Playgroud)

virtual-machine eol vagrant vagrantfile

17
推荐指数
2
解决办法
6863
查看次数

Git和IntelliJ行分隔符问题

我正在IntelliJ 15.0.3使用Git通过Git Bash(提交和推送更改).当我fetch从远程git存储库提交文件时,它包含不同的行分隔符(混合模式或如何调用它).我的意思是一些行结束,CRLF一些行以LF(相同的文件)结束.

当我在IDEA中进行更改时 - 文件会自动保存,并且所有行分隔符都会减少(更改)为IDEA默认行分隔符(LF对我来说).

并且git将这些更改视为对文件的更改,因此我提交了大量更改的文件:

- some line
+ some line
Run Code Online (Sandbox Code Playgroud)

因为some line [CRLF]改成了some line [LF].

如何配置Git忽略此配置或如何配置IntelliJ IDEA为在此混合模式下保留文件?我不想在没有变化时提交更改.

git intellij-idea

9
推荐指数
1
解决办法
9580
查看次数

Android Studio - 基于Git的多平台项目的CRLF vs LF

我正在开发一个涉及多个开发人员的Android项目,其中一些开发人员在Windows上,另一些开发人员在Linux/MacOS上.由于我在Windows上,我已被指示配置Git如下以避免问题:

autocrlf = true
safecrlf = true
Run Code Online (Sandbox Code Playgroud)

这很好用.我在Android Studio中创建的任何.java/XML/etc文件都是CRLF,当我将它们推入repo时转换为LF,然后当我将更改提取到本地副本时返回CRLF.问题是,由于某种原因,某些类型的文件(如矢量可绘制资源)会在LF中生成.因此,当我尝试将它们添加到Git时,我得到了"不可逆转换"错误:

在此输入图像描述 我知道我可以设置safecrlf = warn,但据我所知,如果Git错误地将它们用于文本文件,则存在破坏二进制文件的风险,因此我正在寻找更安全的解决方案.现在我在将它们添加到Git之前手动将矢量资源编辑到CRLF中,这避免了上述错误消息,但是为每个文件重复该过程变得乏味.有什么方法可以强制Android Studio在CRLF中生成所有本地文件?

git android core.autocrlf android-studio

7
推荐指数
3
解决办法
3630
查看次数

我真的需要在 .gitattributes 中指定所有二进制文件吗

我已经阅读了Git 文档,该文档表明我可以明确地将某些文件设置为文本,因此它们的行尾会自动更改或作为二进制文件以确保它们不变。

但是,我也读到 Git 非常擅长检测二进制文件,这让我觉得这不是必需的。所以我的问题是我真的需要为存储库中的每个文件扩展名指定这些显式设置吗?我已经看到一些建议为所有图像文件扩展名这样做。

# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto

# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
*.c text
*.h text

# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
Run Code Online (Sandbox Code Playgroud)

git newline lf core.autocrlf

7
推荐指数
1
解决办法
1147
查看次数