Git Rebase或壁球?

时间:2019-04-23 19:29:36

标签: git github bitbucket

我已经从develop创建了一个功能分支,该功能分支包含大约20的一堆提交。在将功能分支合并到开发之前,我想将所有提交转换为一个。哪种方法是完成此任务的最佳方法,如何进行git squash或rebase以及如何做到这一点?

1 个答案:

答案 0 :(得分:0)

如果您想将一堆提交压缩到 feature 分支上的单个提交中,则可以按照以下步骤进行操作,但是如果这一系列提交已被推送到远程,则必须确保没有人在 feature 分支上工作,因为您必须强制推送到该分支,并且这意味着重写远程历史记录(通常,如果在公共场所工作,您不想这样做)存储库或更多的人正在该分支上工作。

  1. git checkout FEATURE(其中FEATURE必须替换为您的 feature 分支的名称。
  2. git rebase -i HEAD~21这是假设您要压缩最近的20次提交。如果您拥有最早提交的HASH,也可以执行git rebase -i HASH^
  3. 现在您必须在除第一行以外的所有行上将pick替换为squash(或s)并保存文件
  4. 您必须为此新提交选择提交消息。 Git向您显示您正在压榨的提交消息
  5. 如果原始提交已被推送到远程,则您必须强制推送,因为您正在重写远程历史记录,所以用新的提交替换了这20个提交。如果您要与该分支上的更多人员一起工作,通常就不需要这样做。 git push -f