2012-05-18 10 views
4

我有一個repository在guthub上,它是fluentmigrator的分支。這是我第一次進入git,我已經陷入了無法清理fork和上游存儲庫之間的空白衝突的情況。無法修復git中的eol空白問題

我在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回購電流,並具有對上游回購

[email protected] /c/checkout/fluentmigrator (master) 
$ git diff --stat origin/master 

[email protected] /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的diff並忽略空格。

$ 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的建議來解決這個問題,但似乎沒有把我在我的文件被更新的狀態,並顯示一個diff對我origin,但匹配upstream

這是我試過的。

this答案設置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(-) 

設置core.autocrlf false和手動DOS2UNIX的

$ 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(-) 

關閉轉換!但是在diff中的每個插入行的末尾處掛着^M個字符,例如,

+  public string Group;^M 

設置git config core.whitespace cr-at-eol作出diff看起來是正確的,但我怕如果我提交這個文件,我還是會被放在不兼容的空白字符到回購。

我試圖修復我的叉拉請求,所以任何意見一般處理這個問題表示讚賞。

回答

1

我將完全重做本地克隆人:

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

總之,沒有EOL轉換應該發生在首位,你應該一直dos2unix你現在所有的文件。