相关疑难解决方法(0)

澄清/清除GIT中的行结束问题

我们有一个从subversion导出到git的存储库.此存储库由Mac,Linux和PC用户使用.毋庸置疑,行结尾是一团糟.有些文件以CRLF,LF或CR结尾,有些文件在一个文件中的所有两个或三个文件之间混合.

添加autocrlf = true似乎稍微解决了一些问题.然而,差异有时会变得相当奇怪,即对文件进行一行编辑会使差异中的所有行都显示出来(我认为这是由于文件的行结尾都被重写了),有时一行编辑为文件正常工作.

有没有一个网站,或者有人可以解释我们如何解决这个问题?是否有我们必须设置的git设置,或者我们是否必须对所有文件进行批量更新以使某一行结束或具有什么?

任何帮助都会非常感激,因为它非常混乱!

(以下stackoverflow文章似乎可能有所帮助,虽然它没有回答当我们有另一个mac或pc或linux用户提交另一个补丁时会发生什么)

git

9
推荐指数
2
解决办法
6039
查看次数

如何让 Git 在索引中存储 CRLF

我在工作中使用git-svn,人们不断抱怨我犯了LF' 而不是CRLF' 。(我们主要是一家 Windows 商店)。

据我所知,工作副本什么时候是core.autocrlf,什么时候是,什么时候保持不变。我喜欢作为一个概念,但我希望它默认在索引中,因为这就是 get 提交给 SVN 的内容。trueCRLFfalseLFinputautocrlf = trueCRLF

有没有办法设置索引使用哪一行结尾?

我见过core.eol,但这似乎也只设置工作副本使用的内容,而不是索引。

windows git newline git-svn

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

与cygwin和Github for Windows的行结尾

我希望能够使用Github for Windows应用程序以及使用Cygwin(在Windows上)命令行中的git来处理我的git项目.

但是当我从一个切换到另一个时,我继续遇到线路结尾的问题.

如果使用命令行工具repo没有更改,它将希望使用Github应用程序修改所有文件.如果我使用Github应用程序进行更改,那么它将再次使用命令行工具进行更改.

经过相当多的测试后,我无法使它适用于这两种工具.

什么会使它工作?在.gitatributes我目前设置:*text = auto但它没有帮助

git cygwin github-for-windows

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

git line endings:renormalize似乎没有检查右边的结尾

我决定通过.gitattributes文件详细设置我的行结束正确的方式- 例如这里 - 所以我将core.autocrlf设置为false并创建并提交了一个.gitattributes文件:

*.java text eol=native
*.jsp text eol=native
*.css text eol=native
*.html text eol=native
*.js text eol=native
*.xml text eol=native
*.sql text eol=native
*.MF text eol=native

# git files
*.gitignore text eol=native
*.gitattributes text eol=native

#eclipse files
*.classpath text eol=native
*.project text eol=native
*.prefs text eol=native
*.properties text eol=native
Run Code Online (Sandbox Code Playgroud)

然后我按照这里的建议发布git rm --cached -r .然后git reset --hard(也尝试过git checkout HEAD).现在所有文件都有LF行结尾.不应该是CRLF?我错过了什么?我在Windows 7上.git version 1.8.0.msysgit.0

谢谢

git line-endings gitattributes

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

Git merge:为什么在linux和windows上修改源代码后会出现很多合并冲突?

我周末在家里做了一些工作,并使用git将代码更改合并到我的办公室计算机(通过vpn连接),并发现了一些非常难看的合并问题.

首先,合并应该非常干净,因为星期五在办公室里已经完成了所有工作,我只在周六和周日对我的家用电脑进行了更改.但是,当我将更改提取到我的办公室计算机时,我最终遇到了大量的合并冲突.

我清理了合并冲突,但后来我发现许多文件(从我可以告诉我周末更改的任何文件)都有<<<<<<< HEAD" and ">>>>>>> D1/master整个文件.例如:

diff --git a/web/Web.Controller/Helpers/FormsAuthentication.cs b/web/Web.Controller/Helpers/FormsAuthentication.cs
index 8571f53..4a9c9fc 100644
-- a/web/Web.Controller/Helpers/FormsAuthentication.cs
++ b/web/Web.Controller/Helpers/FormsAuthentication.cs
@@ -10,7 +10,10 @@
    /// </summary>
    public class FormsAuthenticationUtility : IAuthenticationUtility
    {
<<<<<<< HEAD

=======
>>>>>>> D1/master
        #region IAuthentication Members

        /// <summary>
Run Code Online (Sandbox Code Playgroud)

我能够kdiff通过与从我的家用计算机复制的源代码进行比较来修复代码,但这似乎完全搞砸了.

有什么想法发生了什么?

git merge conflict

6
推荐指数
1
解决办法
1084
查看次数

为什么git在将文件复制到其他文件之上时会看到整个文件被更改?

当我将文件复制到git控制目录中的另一个文件的顶部时...我看到git认为整个文件已经改变而不是一个小块...为什么?

这是我的意思的一个例子... http://github.com/cmodien/fileupdatetest/commit/90309ed099e257cd98218b4504cd2cd3a3a47a27

好的...我检查了文件中的行结尾...原始文件有crlf行结尾.我粘贴在原始文件上的文件有lf行结尾.这有道理我猜...我从Windows用户那里得到了原始文件,并且我从mac用户那里收到了新文件.

我该如何解决?

git

6
推荐指数
2
解决办法
4175
查看次数

Mac和Windows之间的行结尾问题

我有一台MacBook,我在Parallels VM中运行Windows.我的开发主要是在Visual Studio中,但我喜欢将Git与Mac shell一起使用(就像它比Windows可用的更好).

当我做一个git diff来确定提交之间发生了什么变化时,我得到的结果是"变化",这使得git认为比实际更改了.

我知道这是一个古老的问题,我已经做了很多研究,并提出了很多人的不同建议,但我无法解决这个问题.最有希望的信息是在这个SO帖子中找到的,但它并没有解决我的问题.

以下是我的.gitconfig中的一些相关行...

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

另外,我的repo根目录中只有一个.gitattributes,只包含...

* text eol=crlf
Run Code Online (Sandbox Code Playgroud)

我可以做些什么来让Git停止思考行结束变化是执行差异时的真正变化?我再次使用Mac shell查看Windows文件,因此这可能是我的问题的一部分.

谢谢!

git

6
推荐指数
1
解决办法
1156
查看次数

如何列出 git 存储库中跟踪文件的所有不同扩展名?

我想知道git 在给定存储库中跟踪的文件的所有不同扩展名,以便创建适当的.gitattributes文件。

预期输出示例:

bat
gitignore
gradle
html
jar
java
js
json
md
png
properties
py
svg
webp
xml
yml
Run Code Online (Sandbox Code Playgroud)

我可以使用什么命令来实现这一点?

git bash grep gitattributes

6
推荐指数
1
解决办法
2323
查看次数

Git - Windows和Linux的行结尾

我的主要操作系统是Windows 10.

我有一个在Vagrant中运行的Ubuntu 14.04盒子,我开发了我的应用程序.该框正在运行SMB,它为我提供了对Ubuntu服务器的根文件访问.

在Ubuntu服务器上,我将我的应用程序文件放在GIT仓库中,以gitlab服务器为原点.

我在我的Windows机器上运行SourceTree,通过SMB共享连接到ubuntu GIT仓库(所以我假设它使用我的Windows GIT安装).

ubuntu机器上的Git状态不会发生任何变化.

Windows和SourceTree上的Git状态表示所有文件都已更改(因为行结尾).

为了能够在Windows和Linux上使用相同的本地存储,我应该使用哪些操作系统设置?

linux windows git ubuntu line-endings

6
推荐指数
2
解决办法
4717
查看次数

为什么 Git 想要将我的行结尾更正为 CRLF,即使我希望它们是 LF?

在一个相对较大的项目中,使用签出CRLF和提交LF的策略。为此,我的系统使用:

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

但是,当提交文件(在本例中为.gitattributes文件)时,会返回警告:

LF would be replaced by CRLF in .gitattributes
Run Code Online (Sandbox Code Playgroud)

文件.gitattributes本身包含该行* text=auto !eol,并且文件本身使用 LF 行结尾。

为什么会发生这种情况?为什么 Git 告诉我要小心,因为它会将 LF 转换为 CRLF,即使我希望此文件在存储库中以 LF 结尾进行规范化?

我一定错过了一些完全明显的东西,因为我已经经历过:

还有更多,但这仍然没有像我想象的那样工作。

git line-endings core.autocrlf

6
推荐指数
1
解决办法
5104
查看次数