【问题标题】:git : Pull is not possible because you have unmerged filesgit :无法拉取,因为您有未合并的文件
【发布时间】:2017-09-25 11:28:55
【问题描述】:

我正在使用 php-git 客户端在我的 php 脚本中拉取分支。 每当我从 master 结帐到 testing 时,我都会收到以下错误。

error: Pull is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.

我的文件在 bitbucket 服务器上。我在 bitbucket 上添加/修改文件并在那里提交。

我不明白,我没有在本地机器上修改任何东西,但我仍然收到此错误。

以下是我的“git status”输出。

Your branch is up-to-date with 'origin/testing'.

You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Changes to be committed:

    modified:   g_1.0.yaml
    new file:   potter_3.4.yaml
    new file:   potter_3.4.yml

Unmerged paths:
  (use "git add <file>..." to mark resolution)

    both modified:   abc_1.0.json

【问题讨论】:

  • 在该文件夹/目录中运行git status
  • Exiting because of an unresolved conflict ... 错误信息再清楚不过了。输入 git status 以查看您的哪些文件仍然存在冲突。
  • 添加了我的 git 状态输出,我的问题是如果我没有在本地修改任何内容,所有内容都在服务器上进行了修改,为什么会出现此错误?
  • 您已经清楚地更改了文件 G_1.0.yaml 中的某些内容,只需运行 git diff "g_1.0.yaml" 即可查看您的更改。
  • 无论您是否在本地进行了修改,您都运行了git merge(可能是通过运行git pull)并遇到了合并冲突。我总是建议那些刚接触 Git 的人完全避免使用git pull:它只执行两个 Git 命令,如果你自己运行这两个 Git 命令会更好,这样你就可以知道其中一个何时出错(哪个是过去某个时候发生的事情,现在给你留下了这个烂摊子)。

标签: git bitbucket


【解决方案1】:

您正在合并,请尝试阅读您复制的消息,很清楚您应该做什么: 您有未合并的路径。 (修复冲突并运行“git commit”) (使用“git merge --abort”中止合并)

所以先清除合并冲突

使用您选择的合并工具(例如:乌龟合并、融合)
或者手动完成,在冲突的文件中你应该看到像这样的箭头

然后提交

git commit -m "foobar"

现在您应该能够从远程推送/拉取,但您可能需要先拉取,以便在本地合并新的更改。

或者,如果你不需要你的代码,只是想扔掉所有东西并获得大师,你可以缓解

git reset --hard origin/master

将本地 repo 重置为原始/master 状态,但您将丢失所有本地更改

【讨论】:

  • 感谢您的回答,但我的问题是,我还没有在本地完成这些更改,它已经在我的个人远程仓库下的 bitbucket.org 上进行了修改和提交,现在当我拉取它时,我得到提到的错误
  • 我不知道你做了什么,(你可以用“git reflog”检查)。
  • 但最有可能的是,有人推送到您的仓库,或者您将某些内容合并到您的主库,当您拉回本地时,发生了冲突。但是这种情况很正常,所以找一些好的合并工具吧。
  • 另外,看看 abc_1.0.json,它是在你的仓库中本地修改的,在远程也是。所以搜索 >>>>>>
【解决方案2】:

如果您不想合并更改但仍想更新您的语言环境,请运行:

git reset --hard HEAD 

这将重置你的本地头,然后使用 git pull 拉你的遥控器。

如果您已经在本地提交了合并(但还没有进行远程合并),并且想再次返回:

git reset --hard HEAD~1

【讨论】:

    【解决方案3】:

    Unmerged paths: 部分中有一个文件:abc_1.0.json

    这是冲突的标志。它可能在您从同一分支运行以前的 git pull 时出现。


    你现在必须选择:

    1. 如果您知道您在abc_1.0.json 中修改了某些内容,并且您需要将此修改保留在此文件中,请解决冲突:

      • 在您的编辑器中打开abc_1.0.json
      • 查找冲突标记(行看起来像:&lt;&lt;&lt;&lt;&lt; HEAD=====&gt;&gt;&gt;&gt;&gt; testing
      • 选择应保留的版本
    2. 如果知道当前合并不重要,可以运行git merge --abort,再尝试拉取。

    【讨论】:

      【解决方案4】:

      如果有正在暂存的未合并路径,您需要取消暂存它们。要找出未合并的路径:

      git status
      

      全部取消暂存:

      git restore --staged .
      

      现在您可以提取更改了。

      【讨论】:

        猜你喜欢
        • 2021-04-02
        • 1970-01-01
        • 2020-10-25
        • 2011-12-24
        • 1970-01-01
        • 2018-06-17
        • 1970-01-01
        相关资源
        最近更新 更多