G. *_* G. 4 git git-stash git-pull
我有两台服务器用于开发和生产。在开发服务器中,我有一个与 origin 合并的新分支。现在我想进入生产环境并进行更改。但是在分支 master 的生产服务器中,我修改了两个文件,这些文件只需要这个服务器。
所以当我打:
拉
我得到:
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
Run Code Online (Sandbox Code Playgroud)
这是我需要的两个文件。
如何在不覆盖这些文件的情况下提取原点?
或者我如何保留这些文件,提取更改并将其还原?
至少有三种不同的解决方案可以实现这一点:
commit在运行之前,您可以在生产服务器中对这两个文件进行更改git pull:
git add -v -u
git commit -m "Save prod config"
git pull
Run Code Online (Sandbox Code Playgroud)
这通常会创建一个合并提交,将本地分支(与提交"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
Run Code Online (Sandbox Code Playgroud)
该-r选项代表--rebase并意味着特定于生产服务器的本地提交将重新基于拉取的提交。
可以通过运行执行后续更新git pull -r。
这个解决方案的主要优点是能够保持“线性历史”:没有创建合并提交,并且"Save prod config"提交将始终在历史的“结尾”重播。
或者您可以使用该git stash命令(在发生冲突时可能会有一些缺点):
git stash
git pull
git stash pop
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
3177 次 |
| 最近记录: |