使用 git reset 和 rebase 解决棘手问题🧶
想看更多类似的精彩内容?请访问:https://blog.alec.coffee
你应该重视你的 Git 历史记录是否清晰。它提供了一种与你合作的其他开发人员沟通代码库变更的方式,但这需要一些思考和规划。你见过像这样清晰的 Git 历史记录吗?
可能不会。为什么?开发者通常太懒(这当然情有可原),把 Git 代码组织放在优先级nice-to-haves较低的位置。有了 `git config`和 `git config`TODO的强大功能,我将向你展示,拥有一个清晰易读的代码历史记录是多么快速便捷!git resetgit rebase
我们先来介绍一些 Git 小技巧,你可以轻松地将它们融入到你的工作流程中。这些技巧不仅能帮助你更好地理解 Git 的命令行界面 (CLI),还能帮助你更好地使用图形界面 (GUI) 客户端。这些内容我在 Git 教程中从未见过,都是我自己摸索出来的,或者是和同事们交流心得的。
在制品工作流程
你常常会发现自己身处这种情况:
你刚刚开始在一个新分支上工作,重构了一段代码,安装了一个软件包,并编写了该功能所需代码的一半。
下午6点到了,你全力以赴保存进度。
当你重新回到项目时,你会意识到:“糟了!把这些代码分成多个提交会花好多时间!”。好吧,你可能没这么想,但唉,你可能跟我一样懒。
git reset HEAD~1
git reset是你的好帮手。这会将你当前的 HEAD 重置到你wip提交之前的提交,但你的工作目录(所有文件更改)将被保留,以便你可以继续编辑。
这是这项强大命令的众多功能之一。我建议您对此进行更深入的研究。
太棒了!现在我们可以开始逐个提交更改,做出一些漂亮的更改了!
我们的提交记录现在更有意义了!让我们来完善一下吧。
以正确的方式重写历史……
你已经在一个分支上工作了一段时间,所有的提交都井然有序,但突然有人评论了一个问题,而这个问题涉及的是前两个提交的代码😱
你的文件中出现了一个小错误,需要快速修改。
从技术上讲,这个更改与一个旧的提交有关,那么我们如何回到过去并将其插入到那里呢?
git stash; git rebase -i HEAD~insert_commit_history_depth
这样就把我们一行修改暂时保存起来以备后用,并跳转到交互式变基界面。接下来,我们编辑要合并修改的提交。
既然我们正在编辑旧的提交,就需要将我们的更改恢复过来。
git stash pop; git add .; git rebase --continue
这将把我们之前暂存的更改导入到 git 索引中,将其添加到我们要编辑的提交中,然后继续。
就是这样!想要更快完成这项操作,一个方法是将这些命令字符串别名化为简写。
向一些超棒的工具致敬
特别感谢两款 Git 工具,它们功能强大且界面美观,最近已被我纳入工作流程:
- Gitup是一款简洁易用的实用工具,它功能适中,不会试图面面俱到。它的分支视图、暂存区查看器和集成功能都非常出色。对于 Git CLI 用户来说,它是一款优秀的开源伴侣。
- gitmoji-cli让以可视化的方式整理提交记录变得非常简单。它不仅强制你对提交记录进行分类,使它们井然有序,而且还加入了表情符号!💸
文章来源:https://dev.to/aleccool213/resolving-tricky-situations-with-git-reset-and-rebase-1529喜欢这篇文章吗?不妨请我喝杯咖啡,支持我继续创作。
想每季度收到包含最新文章的电子邮件吗?订阅我的电子报吧!






