Git是目前最流行和无处不在的版本控制系统之一,用于私人系统和公共网站的各种开发工作。无论我对Git变得多么熟悉,似乎总有一些功能等待被发现。让我分享一些与Git相关的技巧,这些技巧改变了我的工作方式。1、Git的自动纠错我们每个人在打字的时候都会时不时的打错字,但是如果开启Git的自动纠错功能,就可以让Git自动纠正一些打错的子命令。假设您想使用命令gitstatus检查状态,但您碰巧输入了gitstats。通常,Git会告诉你'stats'不是一个有效的命令:$gitstats纠错功能。$gitconfig--globalhelp.autocorrect1如果只想对当前仓库生效,省略选项--global。此命令启用自动纠错。可以在相应的Git官方文档[1]中找到该命令的详细说明,但尝试键入上面错误的命令将使您直观地了解此设置的作用:$gitstatsgit:'stats'isnotagitcommand。请参阅'git--help'.OnbranchmasterYourbranchsuptodatewith'origin/master'.nothingtocommit,workingtreeclean在上面的示例中,Git直接运行了它建议的第一个命令,即gitstatus,而不是向您显示它建议的子命令。2.计算提交有很多原因需要计算提交。例如,一些开发人员使用提交计数来确定何时增加项目构建号,而一些开发人员使用提交计数来全面了解项目进度。计数提交相当简单明了,这里是相应的Git命令:$gitrev-list--countbranch-name在上面的命令中,参数branch-name必须是当前存储库中的有效分支名称。$gitrev-list–countmaster32$gitrev-list–countdev343。存储库优化您的代码存储库不仅对您有价值,对您的组织也很有价值。通过一些例程,您可以保持存储库的清洁和最新。使用.gitignore文件[2]是这些最佳实践之一。通过使用这个文件你可以告诉Git不要保存一些不需要记录的文件,比如二进制文件、临时文件等。当然你也可以使用Git的垃圾回收来进一步优化你的仓库。$gitgc--prune=now--aggressive当你和你的团队经常使用pull或push操作时,这个命令非常有用。它是一个内部工具,可以清除存储库中不可访问或“悬空”的Git对象。4.备份未跟踪的文件大多数时候,删除所有未跟踪的文件是安全的。但是很多时候会有这样的场景,你想要删除这些未被跟踪的文件,同时又想做一个备份,以防以后被使用。Git与一些Bash命令和管道操作相结合,使您可以轻松地为那些未跟踪的文件创建zip存档。$gitls-files--others--exclude-standard-z|\xargs-0tarrvf~/backup-untracked.zip上面的命令生成了一个名为backup-untracked.zip的压缩包文件(当然,在.gitignore中的文件是省略不计入)。5.了解你的.git文件夹每个仓库都有一个.git文件夹,这是一个特殊的隐藏文件夹。$ls-a....gitGit主要处理两件事:当前工作树(当前检出文件的状态)Git存储库的文件夹(准确地说是.的位置)这个文件夹存储所有参考信息和一些其他重要的细节,如配置、存储库数据、HEAD状态、日志等等。一旦你删除了这个文件夹,虽然你的源代码没有被删除,但是你的项目历史等远程信息就没有了。删除此文件夹意味着您的项目(至少是本地副本)不再受版本控制。这意味着您无法跟踪您的更改;你不能从遥控器上拉或推。一般来说,您不需要或不应该对.git文件夹做太多事情。它由Git管理,大多数时候它是一个禁区。但是,此文件夹中仍然有一些有趣的工件,例如当前的HEAD状态。$cat.git/HEADref:refs/heads/master它还暗示了你的存储库的描述:$cat.git/description这是一个未命名的存储库;您可以通过编辑文件“描述”来为该存储库命名。Githooks文件夹和一些示例挂钩文件也在这里。请参阅这些示例以查看Git挂钩可以做什么。当然,你也可以参考这篇SethKenlon写的Githooks介绍[3]。6.浏览另一个分支的文件有时,您会想浏览另一个分支下的文件内容。这可以通过一个简单的Git命令来实现,甚至不需要切换分支。假设您有一个名为README.md[4]的文件,它位于主分支上。您目前正在一个名为dev的分支上工作。在终端中使用以下Git命令。$gitshowmain:README.md执行此命令后,您可以在终端的主分支上看到此文件的内容。7.在Git中搜索只需一个简单的命令,您就可以像专家一样在Git中进行搜索。更重要的是,即使您不确定您的更改在哪个提交或哪个分支中,您仍然可以搜索。$gitrev-list--all|xargsgitgrep-F''例如,假设您要搜索字符串“font-size:52px;”在你的存储库中:$gitrev-list--all|xargsgitgrep-F'font-size:52px;'F3022...9e12:HtmlTemplate/style.css:font-size:52px;E9211...8244:RR.Web/Content/style/style.css:font-size:52px;试试这些小技巧我希望这些小技巧对你有用,要么提高你的工作效率,要么为你节省很多时间。
