Git:重新建立分支

标签 git git-rebase

我正在尝试理解 Git 中的 rebase ,并且有一个问题,在这种情况下使用 rebase 是否是一种好的做法:

我有一个名为“feature”的分支,它是从另一个名为“develop”的分支分支出来的。我已经在“功能”中进行了几次提交,但尚未与“开发” merge ,因为该功能仍在开发中,也没有将“功能”中的提交推送到远程存储库。

如果我现在 checkout 'develop' 进行一些修改,将其 rebase 到 'feature' 分支以便 'develop' 与 'feature' 同步是否明智?

最佳答案

我会将“feature” rebase 为“develop”(当然,假设“feature”是本地分支)

将“开发” merge 到“功能”中会产生冗余的 merge 提交。但是做 rebase 会集成来自 master 的所有更改,并让您在“功能”准备好与“开发” merge 之前解决所有冲突,而无需创建任何额外的提交。

肯定有those who disagree .但我喜欢干净、可读的历史。我经常做的是,当我完成该功能时,我 rebase,然后我 merge --no-ff。这样历史仍然清楚地表明有一个特性分支:

- * - * - - - - - - - * - * -
       \             /
        * - * - * - *

问题是我喜欢“持续”地解决冲突。每当有冲突时,我都想尽早知道它,这样我就可以在它变得麻烦之前解决它(类似于持续集成的原因)。如果我遵循使用频繁 merge 的策略,我将有很多 merge 提交。通过频繁的 rebase,我可以避免它们。

有一个替代策略可以让你使用 merge 但没有 merge 提交——你可以打开 git rerere:

git config --global rerere.enabled true

As described in this article ,然后您可以进行中间 merge ,解决冲突,然后重置 merge 提交。 rerere 功能将使 Git 在您对“功能”分支进行最终 merge 时记住冲突解决方案。

关于Git:重新建立分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17232619/

相关文章:

git - 从 git/GitHub 的历史记录中删除文件夹及其内容

bash - 如何通过 GitHub CLI 与多个受让人创建 merge 请求?

git - 如何将 git 存储库从 github 移动到运行 gitolite 的本地服务器

git commit --amend - 未进行任何更改时更改提交哈希

git - 删除虚假的提交父指针

git - 我如何确定哪些提交在 git 中被压缩了?

git workflow branch/clone/stash/--orphan

Git merge 两个本地分支

git - 协作现有的开源项目 - 如何使用 git/github?

git:如何将某个作者的所有提交 rebase 到一个单独的分支中?