小编fer*_*ind的帖子

当我使用git将单个文件签出到其他位置时,如何保留行结尾?

我想将git存储库中的单个文件签出到不同的位置(除了工作目录)并保留当前正在工作的目录.我希望git以正确的行结尾检查我的文件.

我在Windows上工作,但我在Linux中也有同样的问题.

这是我的场景(Win7 64位):

首先,我确保git在提交时将CRLF转换为LF,在结帐时将LF转换为CRLF:

git config --local core.autocrlf true
Run Code Online (Sandbox Code Playgroud)

然后我创建一个名为crlf.txt的文件,其中包含CRLF行结尾并提交它:

git add crlf.txt
git commit -m "File with crlf"
Run Code Online (Sandbox Code Playgroud)

我在crlf.txt中更改了一些内容并提交它:

git add crlf.txt
git commit -m "Change in crlf.txt"
Run Code Online (Sandbox Code Playgroud)

现在我想得到像第一次提交时的crlf.txt:

git show HEAD~1:crlf.txt > "/home/user/crlf_like_in_head-1.txt"
Run Code Online (Sandbox Code Playgroud)

文件"crlf_like_in_head-1.txt"不包含CRLF而是LF.我认为git show是正确的,因为它显示了文件内容,就像它在存储库中一样(core.autocrlf = true将CRLF转换为LF).我知道从文档中我尝试使用core.autocrlf = false.使用core.autocrlf = false"crlf_like_in_head-1.txt"包含CRLF.我知道我可以轻松地将LF转换为CRLF,但我必须确保结果文件与使用git检出的结果文件相同.

我知道我也可以使用git checkout签出一个文件:

git checkout HEAD~1 crlf.txt
Run Code Online (Sandbox Code Playgroud)

但它覆盖了工作目录中crlf.txt的当前内容(如果crlf.txt处于脏状态),我也无法通过git checkout将其签出到另一个文件夹.

git git-checkout core.autocrlf git-show

5
推荐指数
1
解决办法
1165
查看次数

标签 统计

core.autocrlf ×1

git ×1

git-checkout ×1

git-show ×1