动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

Git五大高级功能及指令

07-27 16:54 207浏览
举报 T字号
  • 大字
  • 中字
  • 小字

Git是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。关于Git的基础知识—存储库如何工作,如何创建分支和提交更改以及如何合并这些更改和请求等等,都是我们使用Git的前提,但也有些强大的功能需要一些高级命令才能实现。本文为大家带来Git五大高级功能指令

  • 简化提交历史(git rebase)

当项目中有两个分支(例如,开发分支和主分支)时,两个分支都需要合并更改,那么git merge命令是将它们合并统一的自然而直接的方法。A merge将一个分支的发展历史添加为对另一个分支的合并提交。尽管这可以完整保留两个历史记录,但可能会使项目的整体历史记录难以掌握。在某些情况下,我们需要获得更简单,更干净的结果。

git rebase命令虽然也是合并了两个分支,但是做了一些变动。A git rebase重写一个分支的提交历史记录,以便将另一个分支从创建该分支的位置合并到该分支中。这样可以减少该分支的嘈杂且线性的提交历史记录。但这也意味着删除了有关其他分支和合并过程的潜在有用细节。

为此,rebase最好在将多个私有分支合并到一个公共分支之前将其合并为一个干净的提交历史记录时使用。这样,将获得最大的收益:rebase使提交历史变得更加线性且噪音更少,而且无需模糊有关项目提交历史的关键细节。

二、清理合并 git merge——squash)

另一种减少合并和后续提交的干扰的方法是在git merge中使用squash选项。squash从一个传入分支获取所有提交,并将它们压扁为一个单一合并的提交。

压缩合并的好处在于,可以选择如何应用生成的暂存文件。可以只提交整个更改集,也可以一次提交几个文件,而这些更改都紧密相关。如果传入分支的提交历史记录仅在该分支的上下文中有用,或者如果它来自私有分支(无论如何将被丢弃),则压缩合并也很有用。与rebase一样,此技术最适合将内部分支提交到master,但如果需要,它也适用于请求请求。

三、加快Bug搜索(git bisect)

代码中的微妙回归是最难理解的。试着想象一下,你刚刚在代码库中添加了一个测试来查找错误,但是不确定该错误何时首次出现……并且你的存储库中有成百上千的提交。该git bisect命令使你极大地减少查找造成该错误的提交所必须搜索的代码量。

启用bisect(git bisect start)后,将在代码库中指定两点来绑定搜索:一个知道情况不好,另一个知道情况仍然良好。bisect会在不良提交和良好提交之间检查出一次提交,并让你运行测试。重复执行此二进制细分过程,直到出现破坏事件的提交为止。

git bisect是具有悠久而复杂的提交历史的大型代码库的天赐之物,为你省去了每次上一次提交的麻烦,加快发现错误的进程。而且,它通过搜索和测试,使得需要做的搜索和测试大大地减少了。

四、重新申请提交( git cherry-pick)

许多高级git命令仅在狭义的特定情况下才有用,即使是中度高级的用户也可以完全忽略它们。但是,当你遇到这些特定情况时,你便会觉得书到用时方恨少了:

1.对错误的分支进行了提交,并且想要将其快速应用于正确的分支。

2.要在分支上对中继应用修补程序,然后再继续进行有关中继代码的其他工作。

此时,我们不妨考虑一下git cherry-pick命令。它使你可以进行给定的提交-来自任何分支的任何提交-并将其应用到其他分支,而不必应用该提交历史记录中的任何其他更改。

五、使用Git子模块优雅地组织项目

就像大多数编程语言提供了导入包或模块的方式一样,Git提供了一种将一个存储库的内容自动包含在另一个存储模块(子模块)中的方法。你可以在存储库内创建一个子目录,并使用另一个存储库的内容自动填充该子目录,一般情况下考虑到其一致性,需要引用特定的哈希值来填充它。

   详细介绍Git五大高级功能及指令知道你学会了吗考虑到每个人的Git的基础都不一样,一上来就接触到这些高级命令和高级功能可能反而是拔苗助长。所以,基础薄弱的一些同学可以观看本站的Git详解视频课程,让自己赢在学习Git的起跑线上!

0人推荐
共同学习,写下你的评论
0条评论
天行九歌
程序员天行九歌

6篇文章贡献29402字

作者相关文章更多>

推荐相关文章更多>

Java数据结构

HelloWorld10-31 08:24

浅谈MySQL中SQL优化的常用方法

军哥08-12 23:29

五分钟读懂UML类图

江湖人称小李白12-10 10:41

MyBatis开发框架的四大核心

IT逐梦者08-17 21:43

一次搞定continue,break和return

HelloWorld11-06 11:19

发评论

举报

0/150

取消