git cherry-pick成功但由于eol不匹配而将worktree显示为脏

时间:2016-03-28 05:58:03

标签: git msysgit

我试图在Windows下从另一个分支中挑选一个更改。更改会创建一个子目录和一些文件。当命令本身成功完成时,git status会将所有新文件报告为已更改。 git diff表示每行都有变化,但git diff -w为空,表示存在EOL问题。以下是更多细节:

$ git reset --hard 6e9f9af
HEAD is now at 6e9f9af Hashing helper
$ git status
On branch newmaster
nothing to commit, working directory clean
$ git cherry-pick -m 1 5bd71b0
[newmaster d36aba2] <comment>
 Date: Sun Mar 27 19:21:35 2016 -0700
 37 files changed, 2552 insertions(+)
 create mode 100644 src/phserver/winservice/Config.cpp
 . . . 
$ git status
On branch newmaster
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   winservice/Config.cpp
 . . .

什么没有帮助:

  • 在挑选之前将回购的core.autocrlf设置为truefalseinput。这很有趣,因为文件是新的,而不是在命令之前的索引中。看起来我说话的Git比我想的少......
  • 尝试使用Git for Windows 2.6.2和Cygwin git 2.5.3。
  • 使用git cherry-pick -Xignore-all-space
  • 修改cherry-pick提交。这工作到一定程度

    $ git cherry-pick -m 1 5bd71b0 -Xignore-all-space -n
    $ git add -u .
    $ git commit
    

    虽然这使得工作树干净,但由于eol不匹配,下一个挑选樱桃的补丁失败了 - 看起来这并不能解决一般的问题,只有当源提交中的所有文件都是新的时才适用。

我会很感激建议,更好的是,我们会对正在发生的事情做出解释。

0 个答案:

没有答案