0

与许多地方一样,我们喜欢在合并到 master之前在我们的功能分支中压缩我们的提交。

为此,我们经常git rebase -i HEAD~10在合并之前使用交互式 rebase ( )压缩提交

我如何知道分支内要压缩哪些提交?

如果我这样做,git log我会看到我的提交历史 - 加上之前对 master 的提交。
有没有一种简单的方法可以查看/知道在此分支上进行了哪些提交与已经在主分支上进行的提交? git history似乎没有以明显的方式区分它们。我我知道这个分支上的第一个提交是什么——有没有简单的方法可以确定?

4

2 回答 2

2
git rebase -i master

指示 git 从分支和 master 的共同祖先之后的提交开始选择分支上的所有提交,结果将放在 master 之上。

git log --graph --oneline --decorate master yourbranch

将日志显示为一棵树(具有一些令人印象深刻的 ASCII 艺术性)。

于 2015-11-30T16:22:23.977 回答
0

在编写代码时,如果您知道提交的工作最终将被压缩到另一个提交中,您可以将fixup! <identical commit message>其用作提交消息,并且 git 将自动重新排列并压缩 rebase 上的提交。

这对于维护原子提交的概念特别有用,其中提交是有意义的工作块,与oops fixed typo from last commit您的历史中的提交相反,然后尝试记住在哪里压缩什么。

至于检查图表,我推荐 Aasmund 使用git log一些装饰器的答案。我个人使用 git 扩展,因为我喜欢它的提交窗口和图形可视化,同时在 powershell 中使用 posh-git 来处理其他所有内容。

如果您想要一个别名以交互方式变基回您的起始基地,您可以使用git rebase -i $(git merge-base master HEAD). 这将占用您当前的 HEAD 位置并一直重新定位到您开始的位置。我发现这对于在合并之前压缩我的工作很有用。

于 2015-11-30T19:31:46.363 回答