2015-05-20 139 views
0

“本地更改将被合并覆盖”我一直在努力与其他开发跨三台服务器:Git的工作流程:

  1. 我的本地VM
  2. 开发服务器
  3. Live服务器

我采用的工作流是,在我的本地虚拟机上执行所有工作,然后将更改从repomote存储库中提取到dev服务器(dev分支)和活动服务器(与dev分支合并后的master bean) 。

不幸的是,另一位开发人员修改了一些文件,直接在活动服务器上安装Wordpress插件。因此,当我试图把master分支现场服务器上最新与master上的远程reposiotry,我得到的消息像这样的:

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

请提交更改或藏匿,然后才能合并。

我猜这些文件没有被跟踪。我真的想避免从本地虚拟机以外的服务器转向远程回购。

我在这里解释这个问题的选择是什么。我只需要将实时服务器上的代码库更新到远程仓库即可 - 就是这样。

我应该不知何故放弃这些本地更改?

我也试图代码库与其它设备同步:

git fetch git merge FEATCH_HEAD

没有运气。

我在这里有什么选择?

回答

1

你是对的,你得到这条消息是因为这些文件已经存在本地,在当前检出版本中没有被跟踪,你试图合并的提交包含该文件。

当Git在合并之前已经知道该文件时,它可以安全地同意覆盖它,但是在这种情况下有可能你有该文件并且不知道Git现在会覆盖它,所以Git根本不会这样做。

要解决此问题,您只需腾出空间让Git执行合并。你可以用两种简单的方法做到这一点:

  1. 删除文件。这样,Git就可以在没有任何冲突的情况下从新提交中检出文件。
  2. 重命名文件。如上所述,但您有机会恢复您的本地更改,以防您确保本地执行的所有操作都包含在跟踪文件中。
+0

感谢您的回复。这些文件真的很多。在活动服务器上提交它们也有帮助吗?我不愿意将删除操作搞乱,因为这是一个现场服务器,应该不会有丝毫的偏见。 – luqo33

+0

你可以添加和提交它们,但是你将不得不处理合并和可能的合并冲突。如果你只是想摆脱所有可能的本地变化并获得远程版本,你也可以获取远程('git fetch origin'),然后使用'git reset --hard origin/master'将其重置为其主节点。但是这也会让你失去任何东西,所以请确保你没有任何实际需要的更改。 – poke

+0

我选择抓取和硬复位到原点/主点。一切都很好。非常感激! – luqo33