4

我在 guthub 上有一个存储库,它是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)

我的本地 repo 与我的 github repo 是最新的,并且对上游 repo 有一些更改

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

我试图通过遵循core.autocrlf各种 SO 答案中有关设置的建议来解决问题,但似乎没有什么能让我处于我的文件已更新并显示与我的 diff 的状态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(-)

使用 dos2unix设置core.autocrlf false和手动转换

$ 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外观正确,但是我担心如果我提交此文件,我仍然会将不兼容的空白字符放入存储库中。

我正在尝试为拉取请求修复我的叉子,因此对于处理此问题的任何一般建议表示赞赏。

4

1 回答 1

1

我将通过以下方式完全重做本地克隆:

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

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

于 2012-05-18T23:16:51.290 回答