我试图在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
设置为true
,false
或input
。这很有趣,因为文件是新的,而不是在命令之前的索引中。看起来我说话的Git比我想的少...... git cherry-pick -Xignore-all-space
修改cherry-pick提交。这工作到一定程度:
$ git cherry-pick -m 1 5bd71b0 -Xignore-all-space -n
$ git add -u .
$ git commit
虽然这使得工作树干净,但由于eol不匹配,下一个挑选樱桃的补丁失败了 - 看起来这并不能解决一般的问题,只有当源提交中的所有文件都是新的时才适用。
我会很感激建议,更好的是,我们会对正在发生的事情做出解释。