git 拾遗

git 拾遗

合并提交将第二个和第三个提交合并到第一个提交中,可以按照以下步骤操作:执行 git rebase -i HEAD~3 命令,这将打开一个编辑器窗口,并列出最近的三个提交(假设你要合并最近的三个提交)。...

花野猫

花野猫

更新于 2023-08-01

842

合并提交

将第二个和第三个提交合并到第一个提交中,可以按照以下步骤操作:

  1. 执行 git rebase -i HEAD~3 命令,这将打开一个编辑器窗口,并列出最近的三个提交(假设你要合并最近的三个提交)。

  2. 在编辑器窗口中,将最后两个提交的操作从 pick 改为 squash 或者 s

pick d8c15d9 第一个提交
squash af4157a 第二个提交
squash 5f6cf5a 第三个提交
  1. 保存并退出编辑器窗口,这将开始执行重写历史的操作。
  2. 在下一个编辑器窗口中,你可以编辑合并后的提交信息。默认情况下,所有提交的信息将被保留,你可以将这些信息合并到一个更有意义的提交信息中,以便更好地描述该提交的内容。
  3. 保存并退出编辑器窗口,这将完成提交历史压缩。
  4. 使用 git log 命令检查提交历史,确保你已经正确地重写了提交历史。
  5. 最后,使用 git push --force 命令强制推送你的修改,这将更改远程仓库的提交历史。

注意执行 git push --force 命令时,将影响所有使用该仓库的人。如果你确信你的修改是正确的,并且没有任何人在使用该代码仓库,那么就可以安全地使用该命令。否则建议先与团队协商。

rebase 执行流程

  1. 找到两个分支(即当前所在分支和要 rebase 的目标基础分支),然后将这两个分支最近的公共祖先节点确定下来
  2. 接着检查当前分支比这个祖先节点多出了哪些提交记录。具体地说,rebase 就是利用 git diff 找出要被转移的“差异”集合。这样就得到了一个补丁序列
  3. 将这个补丁序列按照顺序依次应用到目标分支上,直到所有 UTU 任务完成。

因为每次在使用 rebase 命令时都需要制作一系列修改并 apply 它们,所以 rebase 可能会导致一些代码冲突产生。如果存在代码冲突,在apply过程中会暂停进行提示并等待我们手动处理冲突。该操作持续到最后一个修改应用完毕,或者用户解决好所有与工程修改相违背的行为才结束。

通过 rebase 我们可以让两条平行的不同历史线变成一条连续的主干,从而简化项目历史记录,并使项目更易于管理、理解和维护。

c