当前位置:   article > 正文

一个快速合并多个 Git Commit 的工具_git合并工具

git合并工具

源码地址:https://github.com/dongguabai/coding-for-everyday

在日常的软件开发过程中,有时我们可能需要将多个提交(commit)合并成一个,以保持提交历史的清晰和简洁。这种做法有以下几个好处:

  1. 易于理解的历史:合并提交可以将一系列的更改组合成一个有意义的单元,使得其他开发者更容易理解每次提交的目的。

  2. 方便代码审查:如果一个功能或修复需要多个提交,那么在代码审查时,审查者需要查看多个提交。如果将这些提交合并成一个,那么审查者只需要查看一个提交,这将大大简化代码审查过程。

  3. 避免冗余和混乱:如果不合并提交,那么提交历史可能会充满了大量的小修改和修复,这会使得提交历史变得冗余和混乱。

  4. 更好的回滚:如果一个功能由多个提交组成,那么在需要回滚时,你需要回滚所有相关的提交。如果将这些提交合并成一个,那么你只需要回滚一个提交。

虽然 Git 提供了 rebase -i 命令来进行交互式的提交合并,但是这个过程可能会比较繁琐,特别是当需要合并的提交很多的时候,比如今天我遇到的:

在这里插入图片描述

为了解决这个问题,本文实现了一个 Shell 脚本,可以快速将一个提交和它之前的所有提交合并成一个。下面是这个脚本的内容:

#!/bin/bash

if [[ -z "$1" ]]
then
    echo "Please provide a commit ID as an argument."
    exit 1
fi

commit_id="$1"

parent_commit_id=$(git rev-parse "$commit_id^")

GIT_SEQUENCE_EDITOR="sed -i -e '1,1!s/pick/squash/'" git rebase -i "$parent_commit_id"

git rebase --continue
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

这个脚本接受一个 commit ID 作为参数,用于将当前 HEAD 到指定 commit ID 的所有提交快速合并为一个单独的提交。它通过交互式 rebase 的方式,将除了指定 commit 之后的所有提交标记为 squash,这样在 rebase 过程中,这些提交将被合并到一个新的提交中.

这个脚本可以大大简化提交合并的过程,特别是当需要合并的提交很多的时候。下面是一个使用示例:

在这里插入图片描述

欢迎关注公众号:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/697946
推荐阅读
相关标签
  

闽ICP备14008679号