git 命令git 地址_5个高级Git命令来启动您的Git游戏

git 命令git 地址

如果您今天是一名开发人员,那么您很可能已经学到了Git,它是现代软件工作流程的核心版本控制系统。 您了解基础知识-存储库如何工作,如何创建分支和提交更改以及如何合并这些更改和请求。

但是,现在您已经了解了基础知识,是时候进行一些升级了,以利用工作流程中Git的一些更强大的功能。 这里有五种高级Git功能,这些都是您当前和未来开发工作的一部分。

[ 同样在InfoWorld上:您将犯下的6个Git错误-及其解决方法 ]

使用git rebase简化提交历史

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

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

为此,当您有多个私有分支想要合并到公共分支之前,将其合并为一个干净的提交历史记录时,最好使用rebase 。 这样,您将获得rebase的全部好处-使提交历史变得更线性且噪音更少-无需模糊有关项目提交历史的关键细节。

使用git merge --squash清理git merge --squash

另一种进行合并和后续提交的方法可以减少噪音,这是通过git merge使用--squash选项--squash从传入分支获取所有提交,并将它们展平为单个合并的提交。

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

rebase ,此技术最适合将内部分支提交给master,但如果需要,它也适用于请求请求。

使用git bisect加快错误搜索

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

启用bisectgit bisect start )时,您在代码库中指定了两个要绑定搜索的点:一个知道不好的地方(通常是HEAD ),另一个知道事情还不错的地方。 bisect将在不良提交和良好提交之间检出一份提交,并让您运行测试。 重复执行此二进制细分过程,直到出现破坏事件的提交为止。

git bisect是具有悠久而复杂的提交历史的大型代码库的天赐之物,为您省去了每次上一次提交的麻烦,希望您早晚发现错误。 起码,它通过搜索和测试,你需要做的半量减少了。

重新应用git cherry-pick提交

许多高级git命令仅在特定情况下才有用,即使是中高级用户也可以安全地忽略它们。 但是,当您遇到这些特定情况之一时,了解它们是值得的。

考虑一下git cherry-pick 。 它使您可以进行给定的提交-来自任何分支的任何提交-并将其应用到其他分支,而不必应用该提交历史记录中的任何其他更改。 这在一些关键情况下很有用:

  • 您对错误的分支进行了提交,并且想要将其快速应用于正确的分支。
  • 您要在分支上对中继应用修补程序,然后再继续进行有关中继代码的其他工作。

请注意,除了在选择cherry-pick时直接应用提交之外,您还有其他选择。 例如,如果传递--no-commit选项,则经过精心挑选的提交将放置在当前分支的暂存区域中。

[ 同样在InfoWorld上:Git和GitHub用户的27个基本技巧 ]

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

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

请注意,Git子模块在以下情况下效果最佳:

  • 有问题的子模块不会经常更改,或者它们被锁定为特定的提交。 子模块的任何工作,而不是一个子模块,应单独管理。
  • 每个人都在使用支持子模块并了解使用它们的步骤的Git版本。 例如,子模块目录并不总是自动用子模块存储库的内容填充。 您可能需要在git submodule update上使用git submodule update命令来使所有内容保持最新。

翻译自: https://www.infoworld.com/article/3561098/5-advanced-git-commands-to-up-your-git-game.html

git 命令git 地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值