尝试从远程分支拉取时出现错误:
Your local changes to the following files would be overwritten by merge: app/..../_shared.scss
Git要求提交文件或存储。
问题是 - 我已经完成了git add .
和git commit -am "trying to remove the error"
。问题依然存在。
git status
说:“无需提交(工作目录清理)”
有谁知道如何摆脱它?
答案:将有问题的文件移到其他位置。然后从树中删除有问题的文件。再次拉。然后将您的违规文件中的更改与您刚刚提取的文件区分开来。黑客,但它的确有效。
注意:我在这里找到了答案(Git asks me to commit or stash even those changes are commited),但是由于没有人按原来的想法投票,我应该重新发布。这是一个黑客,但它是解决问题的最快途径。
答案 0 :(得分:6)
如果git status
报告工作目录干净,我打赌你的工作目录中有一个被忽略的文件,其他人添加到远程仓库。您可以使用git diff --stat your-branch remote-name/remote-branch
和git ls-files -i --exclude-standard
来确认。
解决方案是从忽略文件中删除文件(因此git status
将其显示为未跟踪的文件),使用--include-untracked
选项隐藏文件,从遥控器中提取更改,然后应用存储将您的更改合并回来。
答案 1 :(得分:2)
或者你可以“强迫拉”,因为我倾向于称之为。
公平警告:此代码段将销毁所有本地更改 (包括已提交但未推送的更改)
git fetch origin master
git reset --hard FETCH_HEAD
git clean -df
答案 2 :(得分:0)
我试图检查被忽略的文件,正如@ellotheth所说,但这不是问题所在。 只有我的解决方案是移动受影响的文件。
然而,在提交期间,有许多“无法取消链接文件,权限被拒绝”,我知道远程某些文件被移动/添加。 可能它与Windows安装有关... Git Checkout warning: unable to unlink files, permission denied
答案 3 :(得分:0)
以上解决方案对我不起作用。我在有问题的文件中插入了一个空行,并使用了命令git update-index --no-assume-unchanged /path/to/file
。然后承诺并正常推动它。