重现问题的方法
正在使用 word 文件导致合并失败。以下是重现该问题的方法:
创建一个仓库a:
mkdir a
cd a
git init
创建a/alpha.docx并保存,然后继续
git add alpha.docx
git commit -m "initial alpha commit"
创建一个以 a 为远程的 repo b:
cd ..
mkdir b
cd b
git clone ../a
修改a/alpha.docx并保存,然后继续
cd ../a
touch beta # create some file
git commit -am "modified alpha"
在 word 中打开 b/alpha.docx 并开始输入内容。不要保存它。这会将文件标记为忙碌。
cd ../b
git pull
这将创建文件b/beta,然后中止合并并出现此错误:
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /cygdrive/c/tmp2/b/../a
a797c43..5c6796e master -> origin/master
Updating a797c43..5c6796e
error: unable to unlink old 'alpha.docx': Device or resource busy
如果您现在在关闭 word 并丢弃本地更改后再次尝试拉取,则会发生这种情况:
$ git pull
Updating a797c43..5c6796e
error: The following untracked working tree files would be overwritten by merge:
beta
Please move or remove them before you merge.
Aborting
如何处理
方式 1
git reset --hard HEAD
git clean -f -d
git pull
如建议here
方式 2
git add -A
git stash
git pull
git stash drop # optional
为什么会这样
我不知道。如果您知道,我们鼓励您编辑此部分。
我个人希望 git 在中止合并时删除所有新文件。
引用以上Noufal Ibrahim's answer:
在源分支中创建一个包含所有更改的新提交
暂存区。在发生冲突的情况下,此更新过程
暂存区被打断,控制权交给你。这就是为什么
发生这种情况。