我试图找出git-rebase
的工作机制。 Documentation提供了有关git-rebase
做什么的信息,但没有评论它是如何做的?
我查看了source code,制定了一些测试用例,并且到目前为止理解了以下内容:
1. Git维护.git/rebase-apply
中的rebase状态(包括patch,final-commit,head-name等文件)
2. Git使用git-format-patch
创建所有必需的补丁文件(在rebase-apply中)
3. Git使用git-am
逐个应用这些补丁
我想我错过了很多细节。我在哪里可以找到实施细节?是简单地倾销补丁并天真地应用它吗?
答案 0 :(得分:3)
您的摘要基本完成。 Rebase实际上相对简单。
git rev-list <upstream>..<branch>
来标识需要移动的所有提交。
.git/rebase-apply
)中。git rebase --merge
调用rebase,则提交将存储在不同的状态文件夹(.git/rebase-merge
)中。HEAD
被分离并设置为onto
提交(新的基本分支,您将应用这些更改)。cherry-pick
有问题的提交。这是因为cherry-pick
能够将合并冲突写入索引和工作目录。cherry-pick
ed。cherry-pick
因冲突而失败,则rebase停止,您(用户)必须解决任何冲突并将git add
它们解析为索引。解决所有冲突后,您可以git rebase --continue
。