理解和使用 git rebase

understanding and using git rebase

几个月来我已经阅读了很多关于 git rebase 的文章。但是,我在日常开发工作中仍然不太习惯使用它。就像我理解版本控制工具中的合并一样,有没有一种方法可以让我理解 git 中的 rebase 并使用它来利用它提供的有用性?

VonC 的 link 非常好,但它可能只有助于进一步阅读。

首先要记住的一点是 rebase 主要用于您的私人开发分支。 Rebase 总是重写历史,所以对已经发布和合并并被其他人使用的分支进行 rebase 是邪恶和粗鲁的。

有两个主要用例。

一个。将您的开发分支移动到上游提交

git checkout feature
git rebase master

结果:

  X (feature)                 X (feature)
 /                 =>        /
X-X-X-X (master)      X-X-X-X (master)

两个。使用交互式 rebase

清理你的开发分支的历史
git checkout feature
git rebase -i master

历史:

      X (feature)
     /
    X             =>        X (feature)
   /                       /
X-X (master)            X-X (master)

git rebase -i 启动编辑器并为您提供分支上的提交列表。每个前面都有一个默认的pick操作。如果你保持 pick 什么都不会改变。可以用其他操作替换pick

  • squash提交到上一个,提示更改描述
  • fixup 上一次提交,自动保留其原始描述
  • edit提交的内容和说明
  • 等等等等等等

学习它的最好方法就是去做。