git说明一个分支在重新定位后没有合并 - 为什么?

Tho*_*s R 15 git git-svn

我正在使用git-svn来管理我的bugfix分支,但它告诉我我有未更改的更改,即使我直接查看SVN repo,我也可以看到它们已经被提交了.这就像错误修复的基础不是将分支设置为合并.

我做错了什么,在这里?

git checkout -b fix_bug_1234

git add .
git commit -m "first change"
git add .
git commit -m "second change"

git rebase -i HEAD~2 // squash the two changes together

git svn rebase // fetch any changes from svn

git checkout master
git rebase fix_bug_1234
git svn dcommit

git branch -d fix_bug_1234
error: The branch 'fix_bug_1234' is not fully merged.
Run Code Online (Sandbox Code Playgroud)

pok*_*oke 27

原因是git rebase更改提交对象.因此,虽然实际内容(或差异)与那些重新提交的提交相同,但它们指的是不同的父级,因此是不同的.

这种方式git branch -d无法验证这些提交的更改是否包含在其他一些提交中.您需要使用git branch -D(大写D)强制删除.

旁注:与变基git svn dcommit有相同的效果.在dcommit将提交推送到SVN服务器之后,它再次从SVN服务器获取提交.因此,您最终会得到与您推送的对象不同的对象.虽然它们的内容可能相同(除非您有冲突),但它们仍然不同(主要原因是git svn在提交消息中添加一行,说明提交所属的SVN版本).