git提示
别再成为git slob!将多个相关的提交结合在一起。
保持您的版本历史记录整洁且可辨认为rebase
设想:
更新Java项目时,我发现似乎不再需要的属性。由于该项目是几年前创建的,而且自该工具创建以来,API规范发生了多次变化,因此这种贬值并不令人惊讶。
尽管如此,我并不肯定我的删除决定是正确的,所以我只是评论了不必要的台词并承诺了这一变化。经过进一步测试,我确定该物业是的确不必要,应更换。
我添加了一个新物业,留下了评论的作品。最终,我决定删除评论的行。这种谨慎的策略使我有3个解决所有问题的提交:从项目中删除弃用的参数。
现在GIT历史已经多个参考对这个很小的变化。我怎么能够结合那些提交进入一个单个,以便任何阅读GIT历史的人都会更轻松地看到所有变化的流程,而不是分心通过多次提及这种小变化?
解决方案:互动式重态
GIT提供了一项功能,可以重写我们的提交历史记录。主要用例是我的确切情况,我们的历史上存在一些湿润的情况,可以为将来的读者提供清理。我不会经历您可以通过rebase做的所有各种事情,但是我将准确地解释它如何解决我的问题!
我的承诺历史看起来像这样:
删除不良属性
做出无关的改变
做出无关的变化
用更新版本替换坏属性
评论不良财产
如前所述,我的目标是对删除,更换和评论我的不良财产的所有更改进行一次提交。为此,我需要像第一个相关的提交一样深入地对我的GIT历史进行更深入的改变。在这种情况下,我需要回顾“评论不良财产”提交。
执行重新恢复到该提交的重新构想是一个简单的两步过程!第一次运行git reclog
并找到提交消息。回流的输出看起来像这样:
ABC123 HEAD@{0}:删除不良属性
xyc321 head@{1}:做一个无关的更改
sln331 head@{2}:进行B无关的更改
ACL097 HEAD@{3}:用更新版本替换坏属性
kds842 head@{4}:评论不良属性
我感兴趣的是头部。我可以用头〜4作为我的rebase命令中的一个参数,表明我需要一个折叠,这可以回到“评论不良财产”提交。所以让我们尝试一下!(您也可以使用提交哈希KDS842)。
跑步git rebase -i头〜4
将打开文本编辑器,并以类似的格式显示提交历史记录:
选择ABC123删除不良财产
选择XYC321进行无关的更改
选择SLN331进行B无关的更改
选择ACL097用更新版本替换不良属性
选择KDS842评论不良财产
您可以编辑此文本文件以更改提交的顺序,并壁球’多个参赛作品。出于我的目的,我可以更新文件以使其看起来像:
选择ABC123删除不良财产
Supash ACL097用更新版本替换不良属性
壁球KDS842评论不良财产
选择XYC321进行无关的更改
选择SLN331进行B无关的更改
请注意,我如何移动与我的坏财产有关的两个提交,直接在最新情况下,然后用“挑选”代替“选择”。壁球’。这告诉git我不希望个人承诺他们,而应将其更改包括在与删除不良属性。
保存并关闭此文件将打开另一个文本编辑器,您可以在其中自定义挤压提交的提交消息:
#这是三个提交的组合。
#第一个提交的消息是:
删除不良属性
#这是第二个提交消息:
用更新版本替换坏属性
#这是第三提交消息:
评论不良财产
将所有内容替换为您想要标记并保存的单个提交消息。
用更新版本替换坏属性
现在,GIT历史记录已重写,三个相关的提交被合并为一个条目!Git Rebase是一种强大的工具,可以帮助您保持树木清洁和整洁。请随时评论任何不清楚的事物,或者您是否有关于将来的文章的建议!