我如何强制“git pull”覆盖本地文件?

如何在git pull上强制覆盖本地文件?

情景如下:

  • 团队成员正在修改我们正在处理的网站的模板
  • 他们将一些图像添加到图像目录(但忘记在源代码控制下添加它们)
  • 他们通过邮件将图像发送给我
  • 我在源代码控制下添加图像,并将其与其他更改一起推送到GitHub
  • 他们无法从GitHub获取更新,因为Git不想覆盖他们的文件。
  • 我得到的错误是:

    错误:未经操作的工作树文件'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删除所有未跟踪的文件/目录,并且不能撤消。

    链接地址: http://www.djcxy.com/p/67.html

    上一篇: How do I force "git pull" to overwrite local files?

    下一篇: Commit only part of a file in Git