abing
abing
发布于 2024-08-31 / 58 阅读
0
0

Git 使用技巧 (1)

Rebase的妙用

当我们一个分支有多次提交,在合并到其他分支的时候,往往会出现当前分支的每次提交都与要合并到的分支出现冲突,所以我们有多少次冲突的提交,就要解决多少次冲突。

这显然太过于麻烦了,我们其实想要的基本都是最后一次提交的版本,因此,只需要解决最后一次提交的结果,和中间每次提交中有用的信息。

所以这时候我们就可以用 rebase 来帮助我们将这些提交的信息整理到一起。

可以看到,我们现在有四次提交,但是我们需要的只有最后一次,所以这时候,我们就可以使用git rebase -i 来操作了。

我们执行git rebase -i HEAD~4 这个命令:

可以看到,这时候出现了一个 vim 编辑框,如果不太熟悉 vim 的话,稍微学一学,键入 i 即可开始编辑

它这里的 pick 代表的是选择,我们将其改为 s 也就是底下描述的 squash 看看它的描述我们就知道了,使用该提交,但是结合到之前的提交中。

我们将opt3、opt4、opt5这几次提交都标记为 s 然后保存并退出 vim 这时候,我们会进入到另外一个 vim 编辑界面

这一次,我们要编辑的是我们合并后的提交的信息,因为我们合并了原先的提交信息,自然也要重新修改对应的备注,这时候,一般情况下我们会只保留最重要的信息,直接将其他的都删除即可,但是如果是有特殊的需求,需要更改对应的信息,那就按照自己的要求来编写即可。

我们这里将其修改为对应的信息,然后保存并退出编辑。

这时候我们就已经完成了 git rebase ,下一步,我们需要利用强推,将我们的本地分支推送到远程分支上面,因为我们现在分支的信息已经跟远程并不一样了,而且我们的信息是最为准确的,最新的,所以要将远程分支同步为我们的分支,因此要使用强推。

这时候查看远端的信息,就可以看到,我们的 git log 已经被修改为只有我们变基之后的了。

这样子我们的这个提交信息就清晰了很多,而且在合并到其他分支的时候,就不用再去处理多次的冲突了。

更进一步的思考

有一种观点认为,仓库的提交历史即是 记录实际发生过什么。 它是针对历史的文档,本身就有价值,不能乱改。 从这个角度看来,改变提交历史是一种亵渎,你使用 谎言 掩盖了实际发生过的事情。

如果由合并产生的提交历史是一团糟怎么办? 既然事实就是如此,那么这些痕迹就应该被保留下来,让后人能够查阅。

要我说,放他的狗屁,md都错了还不去改它,等着人家看到的时候犯迷糊是吧,既然有这个工具,我们就应该尽力用好它。


评论