如何做 Git rebase

什么是 Git rebase

1. 合并冗余的 commit

当一个分支上存在多个连续的小修改 commit 时,可以使用 git rebase -i 命令将这些 commit 合并成一个更有意义的 commit。这样可以让提交历史更加简洁清晰,有利于代码审查和回滚。

2. 同步上游分支的更新

当你从一个上游分支(如 master)拉出一个新的分支进行开发时,如果上游分支在此期间有了新的提交,你可以使用 git rebase 命令将你的分支变基到上游分支的最新状态。这样可以避免产生多余的 merge 提交,保持提交历史的线性。

3. 在自己的分支上同步上游分支

在自己的开发分支上使用 git rebase 命令来同步上游分支的更新是一个很好的实践。这样可以确保你的分支始终基于最新的上游分支,避免在将分支合并回上游时产生冲突。

4. 不要在公共分支上使用 rebase

虽然 git rebase 可以让提交历史更加整洁,但不建议在公共分支(如 master)上使用 rebase。因为 rebase 会改变提交历史,可能会给其他开发者带来困扰。在公共分支上,更推荐使用 git merge 命令来合并分支。

总的来说,git rebase 是一个非常有用的工具,但使用时需要谨慎,主要应用在自己的开发分支上,以保持提交历史的整洁和线性。

如何做 git rebase

git
origin/daraz/main_base_20210422 是基于 origin/dev/20210422 拉出来的分支
如何让 main_base_20210422 同步更新 origin/dev/20210422 的commit rebase 吗?如何操作?

要让 main_base_20210422 分支同步更新 origin/dev/20210422 的提交记录,可以使用 git rebase 命令。以下是具体的操作步骤:

  1. 首先,确保你已经切换到 main_base_20210422 分支上:

    git checkout main_base_202110422
    
  2. 然后,执行 git rebase 命令,将 main_base_20210422 分支变基到 origin/dev/20210422 分支上:

    git rebase origin/dev/20210422
    

    这个命令会将 main_base_20210422 分支上的所有提交记录重新应用到 origin/dev/20210422 的最新提交之上。如果有冲突,Git 会要求你手动解决冲突。

  3. 解决冲突后,继续执行 rebase 操作:

    git rebase --continue
    
  4. 最后,将变基后的 main_base_20210422 分支推送到远程仓库:

    git push --force-with-lease
    

    注意,使用 --force-with-lease 选项可以避免意外覆盖其他人的提交记录。

通过这些步骤,你就可以让 main_base_20210422 分支与 origin/dev/20210422 分支保持同步了。

如何停止当前 git rebase

有以下几种方法可以停止当前正在进行的 git rebase 操作:

  1. 使用 git rebase --abort 命令:

    git rebase --abort
    

    这个命令会完全取消当前的 rebase 操作,并将分支恢复到 rebase 开始之前的状态。

  2. 使用 git rebase --quit 命令:

    git rebase --quit
    

    这个命令与 git rebase --abort 类似,也可以停止当前的 rebase 操作。

  3. 如果你已经解决了冲突并想继续 rebase 操作,可以使用 git rebase --continue 命令:

    git rebase --continue
    

    这个命令会继续执行 rebase 操作,将已解决的冲突应用到新的提交中。

  4. 如果你想跳过当前有冲突的提交,可以使用 git rebase --skip 命令:

    git rebase --skip
    

    这个命令会跳过当前有冲突的提交,继续执行 rebase 操作。

总之,无论是完全取消 rebase、暂停 rebase 还是继续 rebase,Git 都提供了相应的命令供你使用。选择合适的命令来停止当前的 rebase 操作,并根据需要继续后续的操作。