代码之家  ›  专栏  ›  技术社区  ›  David

如何通过git覆盖本地编辑的文件并更新到最新提交?[副本]

  •  0
  • David  · 技术社区  · 6 年前

    昨天,我的git服务器坏了,我需要对我的生产系统做一些紧急更新,这个系统通常从git服务器上运行“sudo git pull”来获取最新的更改。

    现在我的git服务器已经启动并再次运行,我已经提交了git更改的修改版本,并希望将它们拉到我的生产服务器上,但是,它告诉我:

    error: Your local changes to the following files would be overwritten by merge:
        config.php
    Please commit your changes or stash them before you merge
    

    我想用主分支的最新提交覆盖生产服务器上的文件。如何在生产服务器上执行此操作?

    4 回复  |  直到 6 年前
        1
  •  0
  •   halfer    6 年前

    如果你不再需要改变 在生产服务器中,有两种方法。

    方法1:首选

    git checkout . && git pull
    

    方法二:不是最好的,而是完成任务

    git reset --hard && git pull
    

    如果你想保留更改 在生产服务器中供将来参考:

    git stash && git pull
    

    如果您在生产中添加了新文件/文件夹作为更改的一部分,那么您可能需要在使用上述任何方法之前运行git clean。

    git clean -df
    

    d-同时删除未跟踪的目录

    f-强制删除所有未跟踪的文件

        2
  •  0
  •   blue112    6 年前

    使用

    git checkout .
    

    放弃工作树中任何未分页/未分页的修改。

    这是不能取消的,小心你在做什么。


    或者你可以使用

    git stash
    

    如果您已经放弃了重要的修改,可以将它们放回

    git stash pop
    

    或者看到他们

    git stash show
    
        3
  •  0
  •   T A Foxi Maxi    6 年前

    您可以使用:

    git checkout -f master
    

    这将强制git覆盖本地更改并签出master中的最新提交,请参阅文档 here 是的。

        4
  •  0
  •   torek    6 年前

    既然你说它正在生产,我建议你 stash 改变,而不是做 checkout 是的。

    保存有助于将更改保存到一边,您将能够再次获得更改。我总是喜欢用一个名字来形容。

    git stash save "<description>"
    

    应用存储:

    git stash apply stash@{0}
    

    最好是用 apply 因为藏品不会被删除。

    列出存储:

    git stash list