diff B..A显示了四个附加内容;将B转换为A显示2个更改和50个未合并的路径

时间:2016-08-26 19:34:55

标签: git

HEAD是branchB的最新版本,我们希望重新定位到branchA

* 4e4dd23 (HEAD, branchB) 
| * 0b50615 (branchA)
|/
* dbca6fd (branchC)
| * 9b08e2e (branchOther) 
|/
* f3db5ee (master) 
* 4d03982 
* 9d332c0 
* 2aa39e0 

运行git diff branchA.. --name-status会显示此输出:

A       newFile1
A       newFile2
A       newFile3
A       newFile4

我们希望git rebase branchA顺利运行。它没有。相反,在rebase开始之后,git status输出:

rebase in progress; onto 0b50615
You are currently rebasing branch 'branchB' on '0b50615'.

Changes to be committed:

        new file:   newFile1
        new file:   newFile2

Unmerged paths:

        added by us:     someFile1
        added by us:     someFile2
        added by us:     someFile3
        added by us:     someFile...
        added by us:     someFile50

问题:

  1. 为什么只提交两项更改?我们预计每个新文件有四个,一个。
  2. 为什么有未合并的路径?我们预计没有,因为diff只显示了添加内容。

1 个答案:

答案 0 :(得分:-1)

事实证明git rebase并不关心git diff。相反,它关心git log

  

当前分支中的提交所做的所有更改都会保存到临时区域。这是git log <upstream>..HEAD显示的同一组提交。

https://git-scm.com/docs/git-rebase

奇怪的是,修复方法如下:

git add -A
git commit -m "(WAT?) Add missing files"
git rebase continue

此时,git拒绝了continue并推荐了skip

git rebase --skip

完成。奇。

此外,我们在此过程中丢失了两个文件。针对相关git diff项的reflog找到了它们。

注意:这是部分答案/解决方法。更多的帮助会很棒。