无法修复git中的eol空白问题

时间:2012-05-18 21:04:40

标签: git windows-7 github msysgit

我在guthub上有一个repository,它是fluentmigrator的分支。这是我第一次涉足git而且我已经陷入了一种情况,我无法清理我的fork和上游存储库之间的一些空白冲突。

我在Windows 7上运行并且正在使用msysgit客户端。这是链接的存储库

$ git remote -v
origin  https://github.com/lscharen/fluentmigrator (fetch)
origin  https://github.com/lscharen/fluentmigrator (push)
upstream        http://www.github.com/schambers/fluentmigrator (fetch)
upstream        http://www.github.com/schambers/fluentmigrator (push)

我的本​​地仓库与我的github仓库是最新的,并且对上游仓库有一些变化

lscharen@LSCHAREN01 /c/checkout/fluentmigrator (master)
$ git diff --stat origin/master

lscharen@LSCHAREN01 /c/checkout/fluentmigrator (master)
$ git diff --stat upstream/master
 src/FluentMigrator.Console/MigratorConsole.cs      |  563 ++++++++++----------
 .../Initialization/IRunnerContext.cs               |    1 +
 .../Initialization/RunnerContext.cs                |    1 +
 src/FluentMigrator.Runner/MigrationLoader.cs       |  193 ++++----
 src/FluentMigrator.Runner/MigrationRunner.cs       |    4 +-
 src/FluentMigrator.Runner/VersionLoader.cs         |  343 +++++++------
 .../Versioning/VersionMigration.cs                 |  221 +++++----
 .../Unit/TestVersionTableMetaData.cs               |  105 ++--
 .../Unit/VersionLoaderTests.cs                     |  272 +++++-----
 .../Infrastructure/DefaultMigrationConventions.cs  |  252 +++++-----
 .../Infrastructure/MigrationMetadata.cs            |   91 ++--
 src/FluentMigrator/MigrationAttribute.cs           |   70 ++--
 .../DefaultVersionTableMetaData.cs                 |   84 ++--
 .../VersionTableInfo/IVersionTableMetaData.cs      |   57 ++-
 14 files changed, 1182 insertions(+), 1075 deletions(-)

其中一些文件的更改是纯EOL问题。如果我查看src/FluentMigrator.Console/MigratorConsole.cs的差异并忽略空格。

$ git diff --stat -w upstream/master src/FluentMigrator.Console/MigratorConsole.cs
 src/FluentMigrator.Console/MigratorConsole.cs |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

我试图通过遵循从各种SO答案设置core.autocrlf的建议来解决问题,但似乎没有任何东西让我处于我的文件更新的状态并显示对我的{{1 },但匹配origin

这是我尝试过的。

this回答

设置upstream
core.autocrlf input

设置$ git rm --cached src/FluentMigrator.Console/MigratorConsole.cs rm 'src/FluentMigrator.Console/MigratorConsole.cs' $ git config core.autocrlf input $ git add src/FluentMigrator.Console/MigratorConsole.cs $ git diff --stat upstream/master src/FluentMigrator.Console/MigratorConsole.cs src/FluentMigrator.Console/MigratorConsole.cs | 563 +++++++++++++------------ 1 files changed, 287 insertions(+), 276 deletions(-) 并使用dos2unix手动转换

core.autocrlf false

关闭!但是在diff中每个插入行的末尾都挂有$ git config core.autocrlf false $ dos2unix src/FluentMigrator.Console/MigratorConsole.cs $ git diff --stat upstream/master src/FluentMigrator.Console/MigratorConsole.cs src/FluentMigrator.Console/MigratorConsole.cs | 17 ++++++++++++++--- 1 files changed, 14 insertions(+), 3 deletions(-) 个字符,例如

^M

设置+ public string Group;^M 使git config core.whitespace cr-at-eol看起来正确,但是如果我提交此文件,我仍然会将不兼容的空白字符放入回购邮件中。

我正在尝试修改我的分叉以获取拉取请求,因此对于处理此问题的任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:1)

我会完全重做本地克隆:

  • git config --global core.autocrlf=false
  • git clone https://github.com/lscharen/fluentmigrator

简而言之,首先不应该进行EOL转换,您现在应该dos2unix所有文件。