Git隐藏未提交的文件

Git隐藏未提交的文件,git,git-pull,git-stash,Git,Git Pull,Git Stash,我有两台服务器用于开发和生产。在开发服务器中,我有一个与origin合并的新分支。现在我想去制作部做些改变。 但在branch master中的生产服务器中,我修改了两个仅用于此服务器的文件 所以当我点击: 吉特拉力 我得到: error: Your local changes to the following files would be overwritten by merge: app/code/local/NextBits/DependentCustomOptionsImage/Bloc

我有两台服务器用于开发和生产。在开发服务器中,我有一个与origin合并的新分支。现在我想去制作部做些改变。 但在branch 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
这是我需要的两个文件

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


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

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

  • 在运行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
    命令(在发生冲突时可能有一些缺点):


可能重复@phd您提到的这个问题对我没有帮助。事实上,我丢失了一些文件。我拥有的git用于magento站点,并且并非所有文件都在originafter
git commit-m“Save prod config”
I get:
您的分支在“origin/master”之后3次提交,并且可以快速转发。为什么会发生这种情况?@G.G.一般来说,“您的分支在后面…并且可以快速转发”不是警告,只是表示“git pull”不会创建合并提交,因为master恰好是源代码/master的直接祖先,所以“git pull”只需通过将本地分支移动到最新的上游提交来更新本地分支。然而,在我看来,考虑到您在问题中描述的用例,这种情况不应该发生。也许可以检查您是否确实运行了“git add…”并且提交已在良好的分支中成功创建。如果您想在更改某些内容之前查看对生产的更改,您还可以使用
git fetch
git merge--no ff--no commit
,而不是
git merge
。@ErikMD理解。但是我在这个服务器上所做的唯一更改是我已经提到的文件。如果我快进主分支,我会失去任何东西吗?@G.G.快进合并不会导致文件丢失。一般来说,使用Git,您不能丢失更改,前提是这些更改在某个时候已经提交。例如,在使用
git reflog
检查其历史记录后,始终可以将
HEAD
回滚到以前的某个状态。但是您在中说您丢失了更改(可能使用了
git checkout--filenames
命令?这确实是一个破坏性的命令),所以希望您已经保存(提交)了您的帖子中提到的文件。
git stash
git pull
git stash pop