Git rebase在步骤之间留下未提交的文件?

时间:2017-09-08 06:41:28

标签: git visual-studio git-rebase

>git rebase <parent>
First, rewinding head to replay your work on top of it...
Applying: <First Change>
Applying: <Second Change>
.git/rebase-apply/patch:20: trailing whitespace.

warning: 1 line adds whitespace errors.
error: Your local changes to the following files would be overwritten by merge:
        <some exiting project file file>
        <another existing project file>
Please commit your changes or stash them before you merge.
Aborting
error: Failed to merge in the changes.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Patch failed at 0002 <Second change>
The copy of the patch that failed is found in: .git/rebase-apply/patch

我习惯在合并或rebase期间解析CONFLICT个文件。但这种情况让我感到困惑。没有CONFLICT,只是第二个更改无法应用,因为有些文件会被覆盖,这对我来说没有意义。这些都是跟踪的现有文件。在rebase显示没有待处理的添加之前git status,文件在git log -- <some exiting project file file>中正确显示。 <First Change>不会触及这些文件。 <Second Change>修改了它们,但是rebase以某种方式将补丁视为覆盖。

对这个谜团的任何解释,是否有任何建议如何解决这个问题?

git version 2.14.1.windows.1

1 个答案:

答案 0 :(得分:0)

我得出结论是由VS保持打开文件句柄和git之间的交互引起的。一个加重因素似乎有一个gulp:服务任务正在运行,而js / ts / css文件正在签入/签出/分支更改/原始拉等。我还注意到访问被拒绝错误,文件的安全描述符是完全的被破坏(例如,不能作为本地系统获取文件的所有权)。可悲的是看到NTFS元数据处理在这样的状态不佳,但结论对我来说是:使用Git工作时关闭VS。或者从命令行使用vim和msbuild,这样更可靠,更容易使用..但我离题了。