用于迁移几个提交的git rebase?

时间:2015-07-06 07:17:01

标签: git

我希望在git rebase上了解更多信息。

假设我有这个工作流程,git rebase会在这里有用吗? 如果是这样,那么将提交X到Z(假设不使用cherry-pick)从 MASTER 迁移到 BRANCH 的命令是什么。

enter image description here

2 个答案:

答案 0 :(得分:3)

信不信由你,你实际上在master上重新定位branch

以下是您可以用来实现此目的的命令:

git checkout master                  # checkout the master branch
git checkout -b newbranch            # create new branch based on master
git rebase branch                    # rebase on 'branch'

请记住,我创建了一个名为newbranch的新分支,它将以您希望的方式显示。由您决定使用原始branch的内容取决于您。现在newbranch将如下所示:

A--B--C--D--X--Y--Z

更典型的工作流程是将master的新变化引入branch,通过在前者上重新定义后者,即:

git checkout branch
git rebase master

这会使branch看起来像这样:

A--X--Y--Z--B--C--D

答案 1 :(得分:2)

如果您执行了git rebase master(当您检查了分支机构时),则重播 Branch之上master 的提交:

A--x--y--z--b'--c'--d' (Branch)
         |
       (master)

这有助于确保Branch的本地提交仍然与master的最新演变兼容。
确保您还没有推送Branch,因为它会更改其历史记录。

请参阅" git workflow and rebase vs merge questions"。