我如何强制“git pull”覆盖本地文件?
如何在git pull
上强制覆盖本地文件?
情景如下:
我得到的错误是:
错误:未经操作的工作树文件'public / images / icon.gif'将被合并覆盖。
我如何强制Git覆盖它们? 这个人是一个设计师 - 通常我手工解决所有冲突,所以服务器有最新版本,他们只需要在他们的计算机上更新。
重要提示:如果您有任何本地更改,它们将会丢失。 有或没有--hard
选项,任何未被推送的本地提交将会丢失。[*]
如果你有任何未被Git跟踪的文件(例如上传的用户内容),这些文件将不会受到影响。
我认为这是正确的方式:
git fetch --all
那么,你有两个选择:
git reset --hard origin/master
或者如果你在其他分支上:
git reset --hard origin/<branch_name>
说明:
git fetch
从远程下载最新版本,而不会尝试合并或重新绑定任何东西。
然后, git reset
重置将主分支重置为您刚刚获取的内容。 --hard
选项会更改工作树中的所有文件,以匹配origin/master
文件中的文件
[*]:值得注意的是,可以在重置之前通过从master
创建分支来维护当前的本地提交:
git checkout master
git branch new-branch-to-save-current-commits
git fetch --all
git reset --hard origin/master
在此之后,所有旧的提交都将保存在new-branch-to-save-current-commits
。 然而,未提交的更改(甚至是分段)将会丢失。 确保隐藏并提交您需要的任何内容。
尝试这个:
git reset --hard HEAD
git pull
它应该做你想做的。
警告: git clean
删除所有未跟踪的文件/目录,并且不能撤消。
有时候只是clean -f
不起作用。 如果您没有跟踪DIRECTORIES,则还需要-d选项:
git reset --hard HEAD
git clean -f -d
git pull
警告: git clean
删除所有未跟踪的文件/目录,并且不能撤消。