这是我的系统对话:
unrollme-dev-dan:views Dan$ git reset --hard HEAD
HEAD is now at 3f225e9 Fix scan titles
unrollme-dev-dan:views Dan$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: app/signup/finish.html
# modified: app/signup/scan.html
#
Run Code Online (Sandbox Code Playgroud)
我将autocrlf设置为false:
unrollme-dev-dan:unroll-website Dan$ git config core.autocrlf
unrollme-dev-dan:unroll-website Dan$
unrollme-dev-dan:unroll-website Dan$ git config --global core.autocrlf
unrollme-dev-dan:unroll-website Dan$
Run Code Online (Sandbox Code Playgroud)
而且我没有任何.gitattributes文件弄乱了这个:
unrollme-dev-dan:unroll-website Dan$ find …Run Code Online (Sandbox Code Playgroud)我创建了我的回购,autocrlf=true然后做了一些检查和提交autocrlf=false.然后切换回autocrlf=true(OS Win).一切似乎都没问题,直到我开始分支之间的一些合并.出现了许多合并冲突,其中整个文件由于更改而被标记为已更改eols(我认为这些文件是已检出并提交的autocrlf=false).
有一些历史,对我来说是值得的,所以我更喜欢做一些转换或修改提交转换eols而不是创建新的回购并开始新的生活.
这就是我的理解autocrlf(OS Win):
如果是的话 autocrlf=true
WorkingTree -> commit -> GITRepository
CRLF CRLF to LF LF
LF no conv. LF
WorkingTree <- checkout <- GITRepository
CRLF LF to CRLF LF
Run Code Online (Sandbox Code Playgroud)
如果是的话 autocrlf=false
WorkingTree -> commit -> GITRepository
CRLF no conv. CRLF
LF no conv. LF
WorkingTree <- checkout <- GITRepository
CRLF no conv. CRLF
LF no conv. LF
Run Code Online (Sandbox Code Playgroud)
现在我想使用GIT autocrlf=false,所以我决定检查每个分支,eols使用实用程序EOL转换器修复源文件并使用CRLF提交.我做到了,但是时间后,仍有一些文件,这可能是没有签出后,我改变了设置 …
我有带VS项目的Windows机器,我使用Visual Studio和Cygwin环境中的工具,包括Git.有时我在编辑后会在文件中得到不同的行结尾.我想要简单的解决方案来检查文件的行结束一致性,然后再去回购.core.safecrlf我认为Git 是正确的.现在我有一个奇怪的行为:
文件A和B以下参数:
$file A
A: HTML document, UTF-8 Unicode text, with CRLF line terminators
$file B
B: HTML document, UTF-8 Unicode (with BOM) text, with CRLF line terminators
Run Code Online (Sandbox Code Playgroud)
文件A已经在repo中,文件B是新的.注意,两者都有CRLF行结尾.现在尝试上演他们,core.safecrlf是true.
$git add A # ok
$git add B # fails
fatal: CRLF would be replaced by LF in B.
Run Code Online (Sandbox Code Playgroud)
我core.safecrlf正确使用?或者我可能需要编写钩子来检查文件?
笔记:
core.autocrlfGit中有相关功能,将其添加到标签中(Stackoverflow没有标签core.safecrlf)编辑#1:签出core.autocrlf- 它是input.改为false,现在我可以添加两个文件.为什么?
我对终端的版本控制没有任何经验,但据我所知,SmartGit没有终端也没有使用我可以通过终端配置的外部git客户端,所以我真的不知道我怎么能在它上面执行git配置命令.具体来说,我想做:
git config --global core.autocrlf true
Run Code Online (Sandbox Code Playgroud)
它是否具有UI中可用的等效配置选项,还是有其他方法可以应用此选项?
这真太了不起了。网上有无数的帖子core.autocrlf,.gitattributes我还是不知道该写什么.gitattributes来表达core.autocrlf = false
有人能清除它周围的雾气吗?我并不需要所有花哨的情况下,就给我core.autocrlf = false在.gitattributes。没有更多,但也没有更少。
我的老板和我是唯一从事我们项目的人,我们只使用Mac进行开发.我们正在进行groovy/grails开发,并部署到Linux服务器.在我们的开发过程中任何地方都没有使用MS Windows,但不知何故,当我在bash shell中使用git对文件进行区分时,我最终会看到那些^M表示CR的愚蠢字符(以及换行符,CRLF) ).
这出现在无处不在的文件中.
我在网上搜索了哪里设置IntelliJ IDEA只使用LF作为行结尾但找不到它.谷歌搜索关于IDEA的答案的难度加剧了我的挫败感.
我想做这些事情:
在我的机器(OS X)上配置git以绝对拒绝任何CRLF.
另外,我使用gitolite作为我们的中央存储库服务器(即Ubuntu Linux)的访问层.如果有可能在gitolite中强制拒绝CRLF,那就更好了.
将IntelliJ IDEA配置为永不保存为CRLF.如果可能,甚至可以使它对于充满CRLF的现有文件,如果我添加太多空格并点击保存,则所有 CRLF都被剥离(转换为单个LF).
我认为自己一般都非常精通Git,但我对CRLF的所有配置感到非常困惑.有人可以告诉我所有这些设置应该适用于我的职位吗?
这里的要点是纯粹的*nix/LF-line-ending环境,我不想处理任何CRLF废话.这应该是绝对没有问题的,我讨厌处理它(如果你不知道).
我想让CRLF永远离开我的生活.
我正在使用git svn,今天我遇到了一些麻烦.
我做了一段时间git svn clone,并在我的项目上工作了一段时间.几天后,我把我的工作推到了svn remote(git svn dcommit).然后我试图用TortoiseSVN检查项目,看看一切是否正确.不幸的是,一切都转换为Unix行结尾,VC6无法打开项目.
所以,我的git工作副本是CRLF,但我的svn工作副本是LF.我假设git在git commit或期间转换它git svn dcommit.
如果我设置core.autocrlf = false我的git工作副本,我是否可以假设我可以避免所有这些麻烦?这种强迫git会单独留下新线吗?还有什么需要做的才能让git svn易于使用而不会给我的同事带来麻烦吗?
(也可能有趣的是,我之前在同一台机器上使用过git svn,没有触及设置,这是第一次发生这样的事情.)
根据这个问题,我知道git中的core.autocrlf = true会导致CRLF转换为LF.
但是,当我键入:git config core.autocrlf
我明白了:假
但是,当我暂存已经在repo中的已修改文件时,我仍然会收到以下警告:
Warning: CRLF will be replaced by LF in File1.X.
The file will have its original line endings in your working directory.
Run Code Online (Sandbox Code Playgroud)
我的猜测是文件的repo副本已经设置为"autocrlf = true".
问题:A.如何查询文件或git仓库是否已经强制AutoCrlf?B.如何关闭autocrlf?
我最近开始从事 Xamarin 跨平台开发。虽然我团队中的一些开发人员使用 Mac 进行开发(使用 Visual Studio for Mac),但其他人使用 Windows(使用 Visual Studio 2017)。我们使用 git/github 作为我们的代码存储库/版本控制系统。
在我做了一些更改并添加了一些新文件后,我发布git add .了所有更改,但我收到了这样的警告
warning: CRLF will be replaced by LF in <file-name>.
The file will have its original line endings in your working directory
Run Code Online (Sandbox Code Playgroud)
我检查了我的 git 配置core.autocrlf=input,根据我的理解和这里的文档https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration,这是 Mac 的正确设置。
但是,我不确定上面的警告,因为我以前从未见过它。我发现它更令人困惑,因为并非我添加的所有文件都显示此警告,而仅显示一些。
我已经阅读了很多关于这个问题的帖子,但没有一个接缝可以清楚地解释这些警告是否可以或不能被忽略。或者是否需要修复它们以及如何为像我的团队一样使用 Windows 和 MacOS 的团队修复它们。
我是否需要担心这个警告,对于像我这样在 Windows 和 MacOS 机器上工作的团队来说,这究竟意味着什么?
我在一个仅限Windows的工作环境中工作,开发人员使用各种工具来编辑他们的文件.我们正在使用.gitatlassian堆栈来编写代码版本.我几乎都喜欢它.
我刚刚结束了一场漫长而艰苦的斗争,围绕着如何以及为什么git解释行结尾以及为什么core.autocrlf这样做.我们决定使用core.autocrlf true,一切都很好.
我很想知道如何改变这种行为git status:
CRLF行结尾的文件.我将行结尾更改为 LF
$ git status
On branch somebranch
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: Src/the_file_i_changed_to_LF.js
Run Code Online (Sandbox Code Playgroud)但是之后...
$ git commit -a
warning: LF will be replaced by CRLF in Src/the_file_i_changed_to_LF.js.
The file will have its original line endings in your working directory.
On branch …Run Code Online (Sandbox Code Playgroud)core.autocrlf ×10
git ×10
newline ×3
windows ×2
cygwin ×1
end-of-line ×1
eol ×1
git-add ×1
git-svn ×1
smartgit ×1