gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 13:46:09 24 4
gpt4 key购买 nike

我有一个 repository在 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 的建议来解决问题,但似乎没有什么能让我处于文件已更新并显示差异的状态反对我的来源,但匹配上游

这是我试过的。

this 设置 core.autocrlf 输入回答

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

我正在尝试为 pull 请求修复我的 fork ,因此非常感谢任何有关处理此问题的一般建议。

最佳答案

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

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

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

关于git - 无法修复 git 中的 eol 空白问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10659742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com