相关疑难解决方法(0)

如何强制git在windows下使用LF而不是CR + LF?

我想强制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)

git msysgit

302
推荐指数
5
解决办法
19万
查看次数

我为什么要在Git中使用core.autocrlf = true?

我有一个从Windows和OS X访问的Git存储库,我知道已经包含一些带有CRLF行结尾的文件.据我所知,有两种方法可以解决这个问题:

  1. 设置core.autocrlffalse无处不在,

  2. 按照指示在这里(回荡在GitHub上的帮助页)到存储库转换为只包含LF行结束,然后设置core.autocrlftrue在Windows和input在OS X上有这样做的问题是,如果我有仓库中任何二进制文件那:

    1. 在gitattributes中未正确标记为二进制文件,并且
    2. 碰巧包含CRLF和LF,

    他们会被腐化.我的存储库可能包含这些文件.

那么为什么我不应该关闭Git的行结束转换呢?网上有很多模糊的警告关于core.autocrlf关闭造成问题,但很少有具体问题; 到目前为止我唯一发现的是kdiff3无法处理CRLF结尾(对我来说不是问题),而且一些文本编辑器有行结束问题(对我来说也不是问题).

存储库是我公司的内部存储库,因此我不需要担心与具有不同autocrlf设置或行结束要求的人共享它.

是否有任何其他问题只是留下我不知道的行结尾?

git line-endings

272
推荐指数
3
解决办法
23万
查看次数

git status显示修改,git checkout - <file>不会删除它们

我想删除对我的工作副本的所有更改.
运行git status显示修改的文件.
我没做什么似乎删除了这些修改.
例如:

rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   Rhino.Etl.Core/Enumerables/CachingEnumerable.cs
#       modified:   Rhino.Etl.Core/Pipelines/SingleThreadedPipelineExecuter.cs
#       modified:   Rhino.Etl.Tests/Rhino.Etl.Tests.csproj
#       modified:   Rhino.Etl.Tests/SingleThreadedPipelineExecuterTest.cs
#
no changes added to commit (use "git add" and/or "git commit -a")

rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git checkout -- Rhino.Etl.Core/Enumerables/CachingEnumerable.cs

rbellamy@PROMETHEUS …
Run Code Online (Sandbox Code Playgroud)

git revert working-copy git-status

213
推荐指数
9
解决办法
10万
查看次数

行结束转换如何在不同操作系统之间与git core.autocrlf一起使用

我在Stack Overflow上阅读了很多不同的问题和答案,以及关于core.autocrlf设置如何工作的git文档.

这是我对以下内容的理解:

Unix和Mac OSX(OSX之前使用CR)客户端使用LF行结尾.
Windows客户端使用CRLF行结尾.

当在客户端上将core.autocrlf设置为true时,git存储库始终以LF行结束格式存储文件,并且客户端(即Windows)在签出/提交时来回转换客户端文件中的行结尾-LF行结尾,无论行结尾文件在客户端上的格式是什么(这与Tim Clem的定义不一致 - 请参阅下面的更新).

这是一个矩阵,试图为带有问号的core.autocrlf的'input'和'false'设置记录相同的内容,我不确定行结束转换行为.

我的问题是:

  1. 问号应该是什么?
  2. 这个矩阵对"非问号"是否正确?

我将从答案中更新问号,因为似乎已形成共识.

                       core.autocrlf value
            true            input              false
----------------------------------------------------------
commit   |  convert           ?                  ?
new      |  to LF      (convert to LF?)   (no conversion?)

commit   |  convert to        ?                 no 
existing |  LF         (convert to LF?)     conversion

checkout |  convert to        ?                 no
existing |  CRLF       (no conversion?)     conversion

我并不是真的在寻找各种设置的利弊意见.我只是在寻找数据,这清楚地说明了如何期望git能够在三种设置中运行.

-

2012年4月17日更新:阅读由JJD在评论中链接的Tim Clem的文章后,我修改了上表中"未知"值中的一些值,并更改了"checkout existing | true to conversion"到CRLF而不是转换为客户".以下是他给出的定义,这些定义比我在其他地方看到的更清楚:

core.autocrlf …

git newline core.autocrlf

208
推荐指数
6
解决办法
10万
查看次数

git可以在空格和制表符之间自动切换吗?

我在我的python程序中使用制表符缩进,但我想与使用空格的人合作(使用git).

有没有办法让git在推/取时自动在空格和制表符之间进行转换(例如,4个空格= 1个制表符)?(类似于CR/LF转换)

git tabs indentation

192
推荐指数
3
解决办法
5万
查看次数

Windows下的Git:MSYS还是Cygwin?

我计划将我的项目迁移到git,我现在想知道哪个是Windows下最好和/或最稳定的选项.

从我收集的内容我基本上有2.5个选项:

  1. MSYSgit
  2. Cygwin下的git
  3. (又名2.5)来自Cygwin提示的MSYSgit(假设已经安装了Cygwin git).

注意:IMO Cygwin本身就是一个很大的优势,因为你可以访问几乎所有的*nix命令行工具,就像使用MSYSgit bash一样,你只能访问这些工具的一小部分.

鉴于此,您会建议什么选择?

git cygwin dvcs msysgit

80
推荐指数
5
解决办法
6万
查看次数

跨平台git配置的最佳实践?

上下文

我的许多应用程序用户配置文件都保存在git存储库中,以便在多台计算机和多个平台之间轻松共享.这些配置文件.gitconfig中包含以下用于处理回车换行符的设置

[core]
    autocrlf = true
    safecrlf = false
Run Code Online (Sandbox Code Playgroud)

问题

这些设置也应用于GNU/Linux平台,这会导致模糊的错误.

在配置文件中处理这些特定于平台的差异有哪些最佳实践?

提出的解决方案

我意识到这个问题可以通过为每个平台建立一个分支并将主要内容保持在主服务器并在主服务器向前移动时与平台分支合并来解决.我想知道这个问题是否有更简单的解决方案?

git git-config

47
推荐指数
2
解决办法
3万
查看次数

Windows上的Git 1.6.4 beta(msysgit) - Unix或DOS行终止

我正在我的Win Vista开发VPC上安装msysgit 1.6.4 beta.安装屏幕正在请求我是否要使用Unix行终止或DOS行终止.通常,我会选择DOS,但是设置文本表明DOS终止可能意味着文件不能与Git的所有命令行工具一起使用.Unix行终止状态"......大多数[Windows]应用程序可以处理这个......".

有谁知道我应该选择哪个选项通过shell为我的VS 2008工作使用Git?

git msysgit

43
推荐指数
1
解决办法
3万
查看次数

Visual Studio 2013不提供在Git pull上进行合并

我正在使用Visual Studio 2013 Update 4和git(在Visual Studio Online上托管).我在远程分支中有2个本地提交和2个提交.提交没有本地更改:

工作目录清理

当我尝试在Visual Studio中执行Pull(或Fetch)时,我收到错误:

发生错误.详细消息:1冲突阻止结账

发生错误. 详细消息:1冲突阻止结账

是的,有冲突,我应该合并.根据这个页面,我应该得到一个解决冲突链接.但我在VS中没有看到.

我可以在VS之外进行合并,但这不是重点.同时,我的同事运行相同的设置可以进行合并而没有任何问题.我的VS出了什么问题?

ps我安装了msysgit可能会搞乱配置.根据这篇文章 我的全球.gitconfig看起来像:

[user]
    mail = trailmax@stackoverflow.com
    name = trailmax
    email = trailmax@stackoverflow.com
[core]
    excludesfile = C:\\Users\\trailmax\\Documents\\gitignore_global.txt
    autocrlf = true
    editor = \"C:/Program Files (x86)/GitExtensions/GitExtensions.exe\" fileeditor
[diff]
    tool = vsdiffmerge    
[difftool "vsdiffmerge"]
    cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\IDE\\vsdiffmerge.exe\" \"$LOCAL\" \"$REMOTE\" //t
    keepbackup = false
    trustexistcode = true
[merge]
    tool = vsdiffmerge
[mergetool]
    prompt = true
[mergetool "vsdiffmerge"] …
Run Code Online (Sandbox Code Playgroud)

git git-merge merge-conflict-resolution visual-studio-2013

35
推荐指数
4
解决办法
3万
查看次数

有没有办法确定现有git仓库中的行结尾?

有没有办法确定现有git存储库中的行结尾?

如果我克隆现有存储库,如何确定创建者使用了哪个core.autocrlf?

我仍然不确定core.autocrlf的最佳设置,例如在Windows机器上(因为有多种意见: 使用代码分发git配置https://help.github.com/articles/dealing-with-line-结局)

额外的问题:您是否可以在Windows上(使用标准工具)确定repo是否在所有提交中都有混合行结尾(错误的core.autocrlf设置)?

git core.autocrlf

24
推荐指数
2
解决办法
8853
查看次数