Git 存储未提交的文件

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)

这是我需要的两个文件。

如何在不覆盖这些文件的情况下提取原点?

或者我如何保留这些文件,提取更改并将其还原?

Eri*_*kMD 5

至少有三种不同的解决方案可以实现这一点:

  • 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 statusgit diffgit 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)