理解和使用 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
提交的内容和说明
- 等等等等等等
学习它的最好方法就是去做。
几个月来我已经阅读了很多关于 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
提交的内容和说明- 等等等等等等
学习它的最好方法就是去做。