【问题标题】:Git rebase conflict with nothing to merge?Git rebase冲突没有合并?
【发布时间】:2011-12-16 00:46:51
【问题描述】:

git rebase 发现冲突,但文件中没有明显问题是什么意思?有问题的文件没有冲突标记,git mergetool 表示“没有要合并的内容”。

我的选项是 resetadd

# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      filename.js

我如何知道这是关于什么以及采取哪条路?

git ls-files -s filename.js 给出 3 行:

100644 d2c915b1d632b8ef8fbcf056824fb7fac7824ab9 1   filename.js
100644 9010798f1d19ac712196b1fc9b0870fd332b1275 2   filename.js
100644 b3ab7ec50812c73a3ec97bf0985f3226ec13cbc8 3   filename.js

根据精美手册,该命令告诉我们模式位、对象名称和阶段编号。模式位相同。那么什么是 1、2 和 3,为什么它们“都被修改”了,但没有显示冲突标记?

【问题讨论】:

  • 可能是空格差异。
  • 尝试git ls-files -s filename.js 看看版本是否确实不同。
  • @JoshLee 我更新了我的问题以回应您的评论。输出显示 3 个 blob,但我不确定从那里去哪里,我如何找到差异,或者判断哪个是“添加”或“重置”?
  • @birryree
  • 你说得对,别理我。

标签: git conflict rebase


【解决方案1】:

索引中标记为123的版本含义如下:

  1. 文件位于您要合并的两个提交的共同祖先中。
  2. HEAD 中的文件,即您进行合并时的当前提交。
  3. 您尝试合并到HEAD 的提交中的文件。

我的信息来源是the git manual's useful section on resolving conflicts

git status 中的 both modified 输出当然表明,自从它们的共同祖先以来,您正在合并的两个提交以不同的方式更改了文件。

对我来说,为什么您在文件中看不到冲突标记是相当神秘的,但是 - 在 git ls-files -s 的输出中 blob 具有不同的对象名称(哈希)表明它们肯定会逐字节有不同的内容。如果您对工作副本中的文件感到满意,您可以执行git add filename.js,然后执行git rebase --continue。但是,无论如何,您可能想知道这些差异是什么。为此,我会尝试以下方法:

git diff :2:filename.js filename.js

...这将显示HEAD 中的版本与您当前的工作副本之间的差异。同样,您可以尝试:

git diff :3:filename.js filename.js

...查看正在合并的版本与您的工作副本之间的差异。

【讨论】:

    【解决方案2】:

    git ls-files -s123 代表 3-way merge 的“阶段”:1 是共同祖先,2 是当前分支 HEAD,3是另一个分支 HEAD。在 Linux 上,您可以尝试以下命令来查看文件之间的不同之处:

    $ git cat-file blob d2c915b1d632b8ef8fbcf056824fb7fac7824ab9 | xxd -ps
    $ git cat-file blob 9010798f1d19ac712196b1fc9b0870fd332b1275 | xxd -ps
    $ git cat-file blob b3ab7ec50812c73a3ec97bf0985f3226ec13cbc8 | xxd -ps
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      相关资源
      最近更新 更多