Git要求提交或存储,但没有什么可以提交的

时间:2012-06-10 20:28:58

标签: git

尝试从远程分支拉取时出现错误: 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),但是由于没有人按原来的想法投票,我应该重新发布。这是一个黑客,但它是解决问题的最快途径。

4 个答案:

答案 0 :(得分:6)

如果git status报告工作目录干净,我打赌你的工作目录中有一个被忽略的文件,其他人添加到远程仓库。您可以使用git diff --stat your-branch remote-name/remote-branchgit 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。然后承诺并正常推动它。