当我使用gitk检查我的分支时,我发现了以下内容:
我创建pretty_url
,切换到它,处理东西,提交,然后切换到master
分支(这是干净的),然后运行git merge pretty_url
,并检查{{1找到了这个。
我确定这不合适,可能gitk
不干净。我该如何解决这个问题?
答案 0 :(得分:6)
这正是你应该从合并中得到的。如果你想要改变和快进,你可以做到这一点而不是直线。
示例:
在合并之前,您遇到了这种情况:
也就是说,master
和branch
的历史不同。他们共享h
作为共同的祖先。合并时(通过git merge branch
在“master”上进行合并时,最终会提交一个包含两个父项的提交来统一该历史记录:
如果那不是你想要的,你可以撤消它并通过做类似的事情来获得你想要的东西:
git reset --hard HEAD@{1} # or whatever commit matches 'j' to undo the merge
git checkout branch
git rebase master # incorporate 'i' and 'j' commits into 'branch'
git checkout master
git merge branch # this merge will be a fast-forward now
这将为您提供您似乎正在寻找的重新线性历史记录:
答案 1 :(得分:4)
红线并不表示不洁的分支;它只是意味着master
中的先前提交早于pretty_url
的头部。这里不用担心。此外,git merge
不适用于不洁的树木。