【问题标题】:How to overwrite local edited file via Git and update to latest commit? [duplicate]如何通过 Git 覆盖本地编辑的文件并更新到最新提交? [复制]
【发布时间】:2018-12-15 02:33:01
【问题描述】:

昨天,我的 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

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

【问题讨论】:

    标签: git gitlab


    【解决方案1】:

    如果您不再需要在生产服务器中进行更改,有两种方法。

    方法一:首选

    git checkout . && git pull
    

    方法 2:不是最好的,但可以完成工作

    git reset --hard && git pull
    

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

    git stash && git pull
    

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

    git clean -df
    

    d - 也删除未跟踪的目录

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

    【讨论】:

      【解决方案2】:

      使用

      git checkout .
      

      丢弃工作树中任何未暂存/未提交的修改。

      此操作无法取消,请谨慎操作。


      你也可以使用

      git stash
      

      如果你丢弃了重要的修改,你可以用

      把它们放回去
      git stash pop
      

      或与他们一起查看

      git stash show
      

      【讨论】:

        【解决方案3】:

        你可以使用:

        git checkout -f master
        

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

        【讨论】:

          【解决方案4】:

          既然你说它正在生产中,我建议你 stash 进行更改,而不是 checkout

          Stash 有助于将更改保存在一边,您将能够再次将其取回。我总是喜欢用一个名字来存储(作为描述的帮助)。

          git stash save "<description>"
          

          应用存储:

          git stash apply stash@{0}
          

          最好使用apply,因为存储不会被删除。

          列出存储:

          git stash list
          

          【讨论】:

            猜你喜欢
            • 2016-06-03
            • 2012-03-08
            • 2015-12-28
            • 2023-04-02
            • 2011-08-16
            • 2017-12-30
            相关资源
            最近更新 更多