git循环(使用git pull,请提交对本地文件的更改)

时间:2014-08-26 11:12:15

标签: git

我似乎陷入了一个奇怪的git循环。

我跑:

git add -A
git commit -m "Config updates"

我得到了:

nothing to commit, working directory clean

所以我做了一个git pull:

git pull -u origin master

我被告知:

error: Your local changes to the following files would be overwritten by merge:
    wp-config.php
Please, commit your changes or stash them before you can merge.

所以,是的,嗯,来自git的反馈。

我该怎么办?

我已尝试专门添加该文件,即git add wp-config.php,没有骰子。还尝试使用--f标志和所有排序。我似乎只是陷入了这个循环中。

3 个答案:

答案 0 :(得分:1)

事实证明解决方案相对简单,虽然我有一种感觉,给出了其他答案,我的情况相当具体(这些人清楚地了解git的内部工作方式比我更多)。

git rm wp-config.php

足以清除文件(没有在本地仓库中注册delete)准备拉。因此,如果你最终处于类似的情况,这是一个简单的事情,无需重新调整或开始搞乱太多事情。

答案 1 :(得分:0)

git add -A将Git已经跟踪的所有文件添加到索引中。所以它实质上更新了它知道的任何文件。从您当前签出的版本开始,wp-config.php 是存储库的一部分,但只是本地文件。您可以使用git status验证这一点。

现在,您想要拉入的远程更改知道wp-config.php,并且在拉动时要包含文件的更改。因此,Git警告您,您有一个未被Git跟踪的本地文件,该文件将被合并覆盖,因为新版本需要跟踪该文件。

所以你有三个选择:

  1. 要么说wp-config.php的远程版本没问题,那么你可以删除你的本地文件并执行合并。
  2. 或者您在提交中添加文件,以便合并可以自然发生,远程版本可以与您的本地版本合并。
  3. 或者您也可能决定根本不应跟踪wp-config.php(因为它可能是特定于本地计算机的配置文件),因此错误地添加了它。在这种情况下,您可以单独检出远程分支,在新提交中删除该文件,然后执行合并:

    git checkout -b original origin/master
    git rm wp-config.php
    git commit -m 'Remove accidentally added wp-config.php'
    git checkout master
    git merge original
    git branch -d original
    

答案 2 :(得分:0)

重新启动您的分支,然后提交更改

git fetch origin
git rebase
git commit -am "Your-Message"