我有两个用于开发和生产的服务器。在开发服务器中,我有一个与origin合并的新分支。现在,我要开始生产并进行更改。 但是在分支主服务器的生产服务器中,我已经修改了两个文件,这只需要该服务器。
所以当我点击时:
git pull
我得到:
error: Your local changes to the following files would be overwritten by merge:
app/code/local/NextBits/DependentCustomOptionsImage/Block/Adminhtml/Template/Edit/Tab/Options/Option.php
app/design/adminhtml/default/default/layout/dependentcustomoptionsimage.xml
Please, commit your changes or stash them before you can merge
这是我需要的两个文件。
如何获取原点并且不覆盖这些文件?
或者我该如何保留这些文件,将更改拉回并恢复原样?
答案 0 :(得分:4)
至少有三种不同的解决方案可以实现这一目标:
您可以在运行.d
之前在生产服务器中的这两个文件上commit
进行更改:
git pull
通常,这将创建一个合并提交,将本地分支(带有提交git add -v -u
git commit -m "Save prod config"
git pull
)和来自远程的更改合并在一起。
如果存在一些冲突,您只需要在"Save prod config"
,git status
和git diff
的帮助下解决它即可。
对于后续更新,应该足以运行git commit
。
与先前的解决方案一样,您可以git pull
在两个生产配置文件上进行更改,但随后运行commit
:
git pull -r
git add -v -u
git commit -m "Save prod config"
git pull -r
选项代表-r
,这意味着特定于生产服务器的本地提交将在拉出的提交之上重新基于。
可以通过运行--rebase
来执行后续更新。
此解决方案的主要优点是能够保留“线性历史记录”:不会创建合并提交,并且git pull -r
提交将始终在历史记录的“结尾”处重放。
,或者您可以使用"Save prod config"
命令(如果发生冲突,可能会有一些缺点):
git stash