当前位置: 首页 > 科技观察

一张脑图带你掌握Git命令

时间:2023-03-12 14:13:27 科技观察

脑图👇本文更多的是介绍Git的常用命令,而不是原理。如果你需要这部分知识,可以阅读下文。说明世界的图表👇首先我们了解一下Git的平时运行流程,一张网上流行的图👇Git经典流程图基本概念Git基本命令根据上图,我们有以下概念👇Repository👉.git当我们使用git来管理文件的时候,比如gitinit,这时候会多出一个.git文件,我们称之为repository。.git文件还有一个作用就是在创建的时候会自动创建master分支,并把HEAD指针指向master分支。工作空间中本地项目存放文件的位置,可以理解为图中工作空间中的暂存区(Index/Stage)。通常我们使用commit命令将暂存区的文件添加到本地仓库。一般来说,HEAD指针指向master分支远程仓库(Remote)。例如,当我们使用GitHub来托管我们的项目时,它就是一个远程仓库。通常我们使用clone命令复制远程仓库代码,本地代码更新后,通过push发送到远程仓库。Git文件状态通常我们需要查看一个文件的状态。gitstatusChangesnotstagedforcommit表示工作区有内容,但是缓存区没有。我们需要提交gitaddChanges。一般来说,这个时候文件是放在缓存区的。我们需要gitcommitnothingtocommit,workingtreeclean的时候,才能把本地代码推送到远端。常用命令git配置命令Git配置命令列出当前配置gitconfig--list列出Repository配置gitconfig--local--list列出全局配置gitconfig--global--list列出系统配置gitconfig--system--list通过上面的命令,如果发现没有配置用户信息,那就配置一下👇配置用户名gitconfig--globaluser.name"yourname"配置用户邮箱gitconfig--globaluser.email"youremail@github.com"分支管理Git分支管理查看本地分支gitbranch查看远程分支gitbranch-r查看本地和远程分支gitbranch-a从当前分支切换到其他分支gitcheckout//例如gitcheckoutfeature/tiantian创建并切换到一个新的分支gitcheckout-b//例如👇gitcheckout-bfeature/tiantiandeletebranchgitbranch-d//例如👇gitbranch-dfeature/tiantian当前分支与指定分支合并gitmerge//例如👇gitmergefeature/tiantian查看哪些分支已经合并到当前分支gitbranch--merged查看哪些分支没有合并到当前分支gitbranch--no-merged查看各个分支最后一次提交对象的信息gitbranch-v删除远程分支gitpushorigin-d重命名分支gitbranch-m拉取远程分支并创建本地分支gitcheckout-b本地分支名xorigin/remotebranchnamex//换个方式,你也可以完成这个操作git命令fetch我的理解是将远程仓库的内容更新到本地。最近跟学姐开发项目的时候,用到了这个命令。具体来说,它看起来像这样👇fetch推荐写成gitfetchorigin:一般来说,这个origin就是远程主机名,一般默认就是origin。branch-name你要拉取的分支local-branch-name一般来说,你在本地新建一个分支,将origin下一个分支的代码下载到本地分支。👇例如gitfetchooriginfeature/template_excellent:feature/template_layout//在你的工作目录下,会有feature/template_layout//一般我们需要做的就是在这个分支上开发新的需求//完成代码最后,我们只需要做的是上传我们的branchfetch等写法,将远程主机的更新全部取回本地。在gitfetch的情况下,检索所有分支更新。如果你想取回特定的分支,你可以指定分支名gitfetch<远程主机名><分支名>当你想取一个分支的内容时如果你回到本地分支,下面的👇gitfetchorigin://相当于👇gitfetchoriginmaster:fancyundoGitfancyundo"工作区"修改👇gitcheckout--暂存区文件取消(不覆盖workspace)gitresetHEAD版本回滚gitreset--(soft|mixed|hard)|命令范围--hard回滚所有,包括HEAD、index、workingtree--mixedrollback部分,包括HEAD、index--softonlyrollbackHEADworkspacecommandstatusqueryviewstatusgitstatusviewhistoricaloperationrecordsgitreflogviewloggitlogdocumentquerydisplayGitcommandoutlinegithelp(--help)显示Git命令大纲完整列表githelp-a显示具体命令manualstashlistgitstashlistdeleteallcachesgitstashclearrestorechangesgitstashpop差异比较Git文件比较比较工作区和缓存区gitdiff比较缓存区和本地库最新提交内容gitdiff--cached比较工作区和本地最新的Commit内容gitdiffHEAD比较两个commit的区别gitdiff分支名称Git分支管理规范"masterbranch"mainbranch用于部署生产环境的分支,保证稳定性。master分支一般由develop和hotfix分支合并,任何情况下都不能直接修改代码。"developbranch"develop是开发分支,通常保存最新完成的和bug修复的代码。在开发新特性时,特性分支是在开发分支的基础上创建的。“featurebranch”开发新功能,基本上是在develop的基础上创建一个featurebranch。分支命名:feature/开头的是feature分支,命名规则:feature/user_module,feature/cart_module。**我对此深有体会。我在网易,我的导师是这样教我的。**通常构建一个特性分支。“发布分支”发布是预发布分支。在发布测试阶段,发布分支代码将作为基准测试。"hotfixbranch"分支命名:Hotfix/以修复分支开头,其命名规则与功能分支类似。当线上出现紧急问题,需要及时修复。使用master分支作为基线来创建一个hotfix分支。修复完成后,需要合并到master分支和develop分支。基本操作有了上面的基本了解,我们来看一下整体流程。创建本地仓库gitinitgitinit链接本地仓库和远程仓库gitremoteaddoriginorigin默认为远程仓库别名url可以是"youcanusehttpsorsshtocreateanewone"查看配置信息gitconfig--listGitusernameandemailgitconfig--globaluser.name"yourname"gitconfig--globaluser.email"your_email"intoSSHkeyssh-keygen-trsa-C"这里replaceyouremail"cd~/.ssh有个文件叫id_rsa.pub,把里面的内容复制到我的git库的SSHKEYs,经常看到远程仓库信息gitremote-v远程仓库重命名gitremoterenameoldnew提交到缓存区gitadd上传全部到缓存区gitadd指定文件提交到本地仓库hostname>:查看分支gitbranch创建新分支gitbranch切换分支gitcheckout创建分支并切换gitcheckout-b删除分支gitbranch-d删除远程分支gitpush-d切换分支gitcheckout忽略文件.gitignorethis文件的作用会忽略一些不需要纳入Git管理的文件,我们也不希望出现在未跟踪文件列表中。那么我们就来看看如何配置文件信息吧。#这个行为注释会被Git忽略#忽略node_modules/目录下的所有文件node_modules#忽略所有以.vscode.vscode结尾的文件#忽略所有以.md*.md结尾的文件#ExceptREADME.md!README.md#Doc/something.txt将被忽略,但doc/images/arch.txtdoc/*.txt将被忽略。#忽略doc/目录下所有txt文件的后缀doc/**/*.txt参考git的基本操作,一篇文章就够了!Git常用操作总结你必须知道的Git分支开发规范CommandLine