1

我刚刚了解了变基,并且强烈警告我在将提交推送到远程后不要变基。我想确保我不会爆炸我的存储库

示例提交历史

foo               W---X---Y  
                 /         \
master  A---B---C---D---E---Z---F---G
  • 在这里,master 分支上的所有提交都可能已推送到 origin/master。

  • Z是 git-merge 通过将已完成的 foo 分支 (Y) 与当前主分支 (E) 合并来进行的自动提交。

  • 自从 foo 模块完成后,master 做了一些更新(F 和 G)。


以下是我想使用 rebase 的方式。

是时候对 foo 分支进行一些更新了,但是它与 master 分支不同步。

  1. 可以简单地git rebase master在最新的 foo 分支上包含 F 和 G 提交吗?

  2. 你能修改我的图表以显示我的提交历史之后的样子吗?

4

1 回答 1

2
  1. 假设,是的,这样做是可以的,因为 git 会检测到foo已经合并到 master 并会快进foo到状态master。这与会git merge master做的事情相同,也意味着,很简单, foo 是和主人一样的东西。

    然而,知道这一点,我只会在git merge这里使用,因为这对我来说更合乎逻辑(你使用合并来进行快进,--ff-only如果你想确保你没有进行真正的合并,它甚至有一个标志)。使用 rebase 的时间是当你正在工作foo并且在那里有几个提交(并且没有推送它)并且有人已经承诺掌握。Rebase 将使您的分支保持最新,而无需进行合并提交。

  2. 我可以,但它会是同一张图,但foo现在指向 master ,或者更准确地说, commit G。不会创建新的提交,因此存储库将保持不变,只是移动了哪些 foo引用。

PS。我在一个虚假的存储库上进行了本地测试以确保,因为在这种情况下使用变基不是我以前尝试过的。

于 2010-10-25T18:57:43.797 回答