【问题标题】:Git workflow: "Your local changes would be overwritten by merge"Git 工作流程:“您的本地更改将被合并覆盖”
【发布时间】:2015-08-01 19:26:25
【问题描述】:

我一直在与另一位开发人员在三台服务器上合作:

  1. 我的本地虚拟机
  2. 开发服务器
  3. 实时服务器

我采用的工作流程显然是在我的本地 VM 上完成所有工作,然后将更改从远程存储库拉到开发服务器(开发分支)和实时服务器(与开发分支合并后的主 beanch) .

不幸的是,另一位开发人员修改了一些文件,直接在实时服务器上安装了 Wordpress 插件。因此,当我尝试使用远程存储库上的 master 更新实时服务器上的 master 分支时,我收到如下消息:

Error: Your local changes to 'plugins/bulk-page-creator/bulk-page-creator.php' would be overwritten by merge.  Aborting.

请在合并之前提交您的更改或存储它们。

我猜这些文件没有被跟踪。我真的很想避免从本地 VM 以外的服务器提交远程 repo。

我有什么意见可以解决这个问题。我只需要将实时服务器上的代码库与远程仓库一起更新 - 就是这样。

我应该以某种方式丢弃这些本地更改吗?

我还尝试将代码库与以下内容同步:

git fetch git merge FEATCH_HEAD

没有运气。

我有什么选择?

【问题讨论】:

    标签: git github merge


    【解决方案1】:

    你是对的,你收到这条消息是因为文件已经存在于本地,在当前签出的版本中没有被跟踪,并且你尝试合并的提交包含该文件。 p>

    如果 Git 在合并之前已经知道文件,那么它可以安全地同意覆盖它,但是在这种情况下,你有可能拥有该文件并且不知道 Git 现在会覆盖它,所以 Git 只是简单地不会的。

    要解决此问题,您只需为 Git 腾出空间来执行合并。您可以通过两种简单的方式做到这一点:

    1. 删除文件。这样,Git 将能够从新提交中签出文件而不会发生任何冲突。
    2. 重命名文件。与上述相同,但您有机会恢复本地更改,以确保您在本地执行的所有操作也包含在跟踪文件中。

    【讨论】:

    • 感谢您的回复。这些文件有很多。在实时服务器上提交它们也有帮助吗?我不愿意搞乱删除,因为这是一个实时服务器,不应该有丝毫中断。
    • 您可以添加并提交它们,但是您必须处理合并和可能的合并冲突。如果您只想摆脱所有可能的本地更改并获取远程版本,您还可以获取远程 (git fetch origin),然后使用 git reset --hard origin/master 重置为其主控。但这也会让你失去任何东西,所以请确保你没有任何实际需要的更改。
    • 我选择了获取并硬重置到源/主。一切都很好。非常感谢!
    猜你喜欢
    • 2014-10-25
    • 2016-01-27
    • 2016-03-30
    • 2015-10-01
    • 2013-08-31
    • 2012-03-24
    • 1970-01-01
    • 2021-04-24
    • 2015-12-03
    相关资源
    最近更新 更多