我在guthub上有一个存储库,它是fluentmigrator的一个分支。 这是我第一次涉足 git,我陷入了无法清理我的分叉和上游存储库之间的一些空格冲突的情况。
我在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
的建议来解决问题,但似乎没有什么能让我处于我的文件更新并显示与我的origin
的差异,但与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(-)
设置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(-)
关闭!但是在差异中每个插入行的末尾都有悬挂^M
字符,例如
+ public string Group;^M
设置git config core.whitespace cr-at-eol
使diff
看起来正确,但是我担心如果我提交此文件,我仍然会将不兼容的空格字符放入存储库中。
我正在尝试为拉取请求修复我的叉子,因此非常感谢处理此问题的任何建议。
我会通过以下方式完全重做本地克隆:
-
git config --global core.autocrlf=false
-
git clone https://github.com/lscharen/fluentmigrator
简而言之,一开始就不应该进行 EOL 转换,您现在应该dos2unix
所有文件。