我如何强制将本地文件覆盖在git pull我的本地仓库包含一个文件名文件名与服务器上的文件名相同。

错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖


当前回答

在 Windows 上执行此单命令 :

git fetch --all & git reset --hard origin/master

其他回答

我也有同样的问题 没人给我这个解决方案 但对我有用

我解决它的方法是:

  1. 删除全部文件。 仅留下.git目录。
  2. git reset --hard HEAD
  3. git pull
  4. git push

现在它的工作原理。

不要用git reset --hard这将抹去他们完全不可取的变化,相反:

git pull
git reset origin/master
git checkout <file1> <file2> ...

您当然可以使用git fetch代替git pull因为它显然不会合并, 但如果你通常拉它, 继续拉在这里是有道理的。

所以这里发生的事情就是git pull 更新您的源/ 主管参考; git reset 更新本地分支引用与来源/主管相同,不更新任何文件,所以您的检查状态没有变化;git checkout 将文件返回到您的本地分支索引状态需要时。如果在现场和上游主控上添加了完全相同的文件,索引已经与重置之后的文件匹配,因此在普通情况下,不需要做git checkout完全没有

如果上游分支也包含您想要自动应用的承诺,您可以跟踪进程上微妙的变异:

git pull
git merge <commit before problem commit>
git reset <problem commit>
git checkout <file1> <file2> ...
git pull

这个解决方案总是在运行 。

cd $GIT_ROOT_DIRECTORY
git fetch origin/$TARGET_BRANCH
git rm -rf --cached .
git reset --hard origin/TARGET_BRANCH
git clean -df
git pull origin $TARGET_BRANCH

您可能会发现此命令有助于丢弃本地更改 :

git checkout <your-branch> -f

然后进行清理(从工作树上移走未追踪的文件) :

git clean -f

如果您想要除去未跟踪的文件之外, 还要删除未跟踪的目录 :

git clean -fd

我尝试了大部分我在这里能找到的东西,

有效的是git merge -X theirs