我试图弄清楚git-rebase. 文档提供了关于什么的信息git-rebase,但没有评论它是如何做的?
我查看了源代码,制定了一些测试用例,到目前为止了解以下内容:
1. Git 维护 rebase 的状态.git/rebase-apply(带有补丁、最终提交、头部名称等文件)
2. Git 用于git-format-patch创建所有必要的补丁文件(在 rebase-apply 里面)
3. Git 用来git-am一一应用这些补丁
我想我遗漏了很多细节。我在哪里可以找到实施细节?它只是简单地倾销补丁并天真地应用它吗?
你的总结基本完成了。Rebase其实比较简单。
git rev-list <upstream>..<branch>为了确定需要移动的所有提交。.git目录中的 state 文件夹中创建了执行 rebase 所需的信息。有两个主要的 rebase 后端,每个后端都使用不同的文件夹:
.git/rebase-apply.git/rebase-mergeHEAD分离并设置为onto提交(新的基础分支,您将在其中应用这些更改)。cherry-pick有问题的提交。这是因为cherry-pick能够将合并冲突写入索引和工作目录。cherry-picked。cherry-pick因冲突而失败,则 rebase 停止,您(用户)必须解决任何冲突并将git add它们写入索引。当您解决了所有冲突后,您就可以git rebase --continue.关于后端的一些结束细节:合并后端最初只是交互式 rebase 后端。它可以通过--merge选项手动调用,也可以用作其他的默认后端--onto。apply 后端较旧,最终可能会被合并后端完全取代。
| 归档时间: |
|
| 查看次数: |
417 次 |
| 最近记录: |