Git 隐藏未提交的文件

Git stash uncommitted files

我有两台服务器用于开发和生产。在开发服务器中,我有一个与 origin 合并的新分支。现在我想投入生产并进行更改。 但是在 branch master 的生产服务器中,我修改了两个文件,只有这个服务器需要。

所以当我点击:

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

这是我需要的两个文件。

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

或者我怎样才能保留这些文件、拉取更改并将它们还原?

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

  • 您可以 commit 在生产服务器中对这两个文件进行更改,然后 运行 宁 git pull:

    git add -v -u
    git commit -m "Save prod config"
    git pull
    

    这通常会创建合并提交,将本地分支(与提交 "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
    

    -r 选项代表 --rebase 并且意味着特定于生产服务器的本地提交将 rebased 在拉取提交。

    后续更新可以通过运行ning git pull -r.

    进行

    这个解决方案的主要优点只是能够保持 "linear history":没有创建合并提交并且 "Save prod config" 提交将始终在 'end'历史.

  • 或者你可以使用git stash命令(在冲突的情况下可能会有一些缺点):

    git stash
    git pull
    git stash pop