我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
当前回答
i 使用此命令删除本地文件, 阻止我进行拉动/ 合并 。 但请注意! 运行 git 合并... 首先看看是否只有那些您真的想要删除的文件 。
git merge origin/master 2>&1 >/dev/null | grep ^[[:space:]] | sed s/^[[:space:]]//g | xargs -L1 rm
git 合并列表, 其中包括所有这些文件。 它们是由一些白色空间预设的 。 2 & gt; & 1 & gt; / dev/ null 将错误输出重定向为标准输出, 因此只能用 grep. grep {[: space: ]] 过滤带有文件名称的行 。 sed s/ {[ [: space: ]] / g trim 从一开始就是白色空间。 xargs - l1 rm 呼叫每个文件的rm, 将其删除 。
处理时要小心: 无论 git 合并输出, 以白色空格开始的每条线都会要求 rm 。
其他回答
对于那些不喜欢重置的人,我喜欢这样的做法:
git checkout branchname # go to your branch
git fetch origin branchname # fetch the remote
git checkout -b backup # optionally, mark your remote as a backup
git branch -f branchname origin/branchname # force your local branch to be equal to the fetched origin/branchname
i 总结了其他答案。 您可以执行 Git 调用, 且不出错 :
git fetch --all
git reset --hard origin/master
git reset --hard HEAD
git clean -f -d
git pull
警告: 此脚本非常强大, 这样您就可以丢失更改 。
我有一个奇怪的状况, 无论是git clean or git reset works. 我必须在每一个未跟踪的文件上使用以下脚本, 从 git 索引中删除冲突文件 :
git rm [file]
那样我就能好好拉了
一旦您进行了 Git 拖动, 您就会得到不匹配的文件列表。 如果文件数量不大, 那么您就可以检查这些文件, 此动作将会覆盖这些文件 。
git 检出 - & lt; filename & gt;
i 通常会这样做,如果为了快速检查我修改服务器上的本地文件(没有推荐的和在您得到这个问题:d背后的大致原因), i 在找到解决方案后检查已修改的文件。
这四个命令对我管用
git reset --hard HEAD
git checkout origin/master
git branch -D master
git checkout -b master
执行这些命令后要检查/拉动
git pull origin master
我尝试了很多,但终于成功地 与这些命令。