我和我的同事git在使用我们的Windows repostiory克隆上的某些文件时遇到了很大的麻烦.克隆是通过克隆源自OSX机器的存储库而制作的.我们已经将autocrlf设置为true,但问题是我们会定期查找git认为已更改的文件,即使我们从未触摸它们(我们甚至不在编辑器中打开它们).
以下输出说明了问题:我出错的任何想法?
$ git status
# On branch master
# Your branch is behind 'origin/master' by 27 commits, and can be fast-forwarded.
#
# 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: Web Applications/webclient/language/en/lang_copyitems.ini
#
no changes added to commit (use "git add" and/or "git commit -a")
Administrator@windows-dev ~/Documents/Workspace/prestige.git
$ git diff "Web …Run Code Online (Sandbox Code Playgroud) 我对git config的core.eol,core.autocrlf,core.safecrlf有点困惑.
http://git-scm.com/docs/git-config
我正在使用Ubuntu和Widows.
我之前有过^ M和其他问题.
谁能为这个问题建议最好的git配置设置?
提前致谢.
我对Git很缺乏经验,这个让我感到困惑:
我只是将我的工作副本切换到另一个分支(一个简单的git checkout master),然后立即git status告诉我有关数百个已更改的文件.然而,这一切都与线路结束有关; a git diff --ignore-space-at-eol给了我很多警告:
warning: CRLF will be replaced by LF in src/.../somefile.js.
The file will have its original line endings in your working directory.
Run Code Online (Sandbox Code Playgroud)
我一般认为在版本化的文本文件中使用DOS样式的行结尾是一个坏主意,但这是他们最初提交的内容; 我在一个Linux机器中完成了这个,我得到的文件有CRLF行结尾.
在我的情况下清理的最佳方法是什么?我应该更改每个文件的行结尾并提交吗?
如何配置Git以避免将来出现这种情况?
我知道有很多类似于这个的问题/答案,但是我找不到这个问题的具体答案。我们是一家 .net 商店,正在使用 git。
我想要一种在执行 git status 时忽略对文件的 CRLF (^M) 更改的方法。在开发过程中,其他进程偶尔会修改文件并注入 CRLF,最终导致它们在 git status 完成时显示为已修改。我的 .gitattributes 文件中有一行 "* text=auto" 以便在结帐/提交时规范行尾,但这不是我要找的。我还尝试将以下内容添加到 git 配置(core.whitespace=cr-at-eol)中,但它们仍显示为已修改。
我如何告诉 git 忽略对 CRLF (^M) 的所有更改?
我不认为这是一个行结束差异问题 - p4merge认为文件中没有任何变化,即使设置为识别行结束和空白差异.
我的问题是有时会发生以下情况:
git status显示没有未提交的更改.git status列出一些已更改的文件.git diff在任何这些"已更改的文件"上显示文件的每一行都已更改.更改后的版本与原始版本相同.为什么会这样?为什么git认为文件已经改变,当它们似乎没有这样做?为什么只检查另一个分支导致这个?
我的第一个想法是行结尾,但我不知道为什么p4merge不会检测到那些.第二个想法是文件模式的改变.我不知道如何找出是否是这种情况.git config --list显示core.filemode设置为false.git config --global --list并且git config --system --list不显示core.filemode的任何设置(我在这里告诉我,因为我不确定不同的配置级别如何互相覆盖).core.autocrlf设置为true.
多个开发人员提交到同一个存储库,我在Windows机器上提取所有更改.我猜某个某个地方有某个设置导致了这个问题,但我不知道这是我本地人还是其他人,或者它可能是什么设置.
列为已更改的文件似乎不是随机的 - 如果我删除我的本地存储库,再次从远程克隆(默认为要检出的主分支)克隆它,并再次检出相同的分支,git status列出完全相同的文件每次都改变了.这些文件有时是最近编辑过的,有时是多年未触及过的文件.它们不仅是二进制文件(core.autocrlf=true已知有时会损坏),也是文本文件.
git rm --cached -r .接下来执行的命令git reset --hard可以消除这些变化,但它经常会发生变得令人烦恼.我也很好奇是什么导致了这一点.
相同的存储库也导致行结束问题.我认为这是一个单独的问题,所以我可能会最终提出另一个问题,但我在这里简要地提到它,以防它毕竟是相关的.检出另一个分支或从远程存储库中提取更改有时会导致文件显示为已更改,并且git diff这些文件仅显示输出warning: LF will be replaced by CRLF in [file]. The file will have its original line endings in your working directory.
编辑:存储库的.gitattributes文件只有行,* text=auto而没有其他内容. …
我做到了git checkout master.如果我这样做,git status它会在我的工作目录中显示两个已更改的文件,即使我没有触及它们.它似乎是某种行结束问题.
git reset --hard HEAD 也没有帮助.
我已经设定core.ignorecase=true,没有帮助.
这有什么不对?Windows上的Git仍然像地狱一样困扰着我......
我和我的同事正在开发一个Android项目,他最近在https://github.com上设置了一个GitHub回购 .在我的最后,我在我的64位Windows 7机器上下载并安装了GitHub for Windows.然后我继续前往GitHub上的回购并使用"在Windows中克隆"按钮克隆项目.
一切似乎顺利进行,项目进展顺利
C:\Android\git-repos\OurProject
Run Code Online (Sandbox Code Playgroud)
在我的机器上.然后我对文件进行了一些更改
C:\Android\git-repos\OurProject\Host\Android\src\com\ourproject\client\SettingsActivity.java
Run Code Online (Sandbox Code Playgroud)
然后我观察到更改的文件(以及一些更改的构建文件)确实显示在我的机器上的GitHub版本上,就像这样

我选择了' SettingsActivity.java'文件,填写了一个简短的描述并点击' Commit'按钮.然后我看到了以下屏幕

然后,当我点击'同步'时

希望我所做的更改将被推回到主仓库,我得到以下消息
unstaged changes
You cannot sync with unstaged changes. Please commit your changes and try again.
Run Code Online (Sandbox Code Playgroud)
为什么我收到此错误消息?
我确实看过这个帖子
而且似乎必须执行以下步骤
但是从这个线程
可能看起来"同步"按钮会全部三个?所以,我不确定如何准确地提交我的提交.我认为我已经提交了我的更改(在上一步中)意味着我已经将它们上演了,这就是提供同步选项的原因.任何帮助解决这个问题都将非常感激.
PS:我也联系了GitHub支持团队,并在下面发布了他们的解决方案.
我不知道这是否是一个常见问题.大多数时候我们从开发回购中提取CSS文件,GIT与当前文件冲突,通过在顶部和底部放置">>>"和"<<<"标记来完全合并这两个文件,分隔它们的"==="标记.
我们尝试了一些不同的缩进,这有点帮助,但根本没有成功.我们没有任何其他文件类型的问题,在这种情况下,大多数是PHP和JS代码.
如果这有帮助,我们已将生产中的所有文本编辑器设置为使用CRLF.
谢谢.
可能的重复:
git 最好的 CRLF 处理策略是什么?
我目前正在做一个项目,几乎每次我将 master 合并到我的分支时,我都会遇到合并冲突,git 说整个文件都已更改。通常,当我使用 Notepad++ 的比较工具比较这些文件时,它会报告实际上只有几行发生了更改,而且通常甚至不应该导致冲突。
有一段时间我只是把这种行为作为一个在跨平台工作时必须遇到的问题(我们的团队使用 Windows 7、OSX 和 debian 的混合进行开发),但是今天当我合并时,有一些阻碍我前进的严重问题。我自己研究过这个问题,似乎它可能与 git core.autocrlf 配置有关,但我不确定如何解决这个问题,以便它立即消失,或者随着 git 修复损坏而慢慢消失我以前做过。任何人都可以就如何解决这个问题提出任何建议吗?
谢谢,
亚历克斯