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

基本面-校招,你必须掌握的Git知识

时间:2023-03-22 00:58:01 科技观察

前面写了。最近在写业务需求的时候,总是和导师的代码冲突,自己处理还是挺费时间的。导师一直提醒我修改和添加代码后要及时提交,但我总是脑补一堆代码就提交,一直没有养成良好的提交习惯。做协同工作的时候,导师问了git的使用原理,我只能解释几个零星命令的作用。下面总结一下常用git命令的作用和原理,希望能帮助更多人少走弯路,提高开发效率。1.一个git下载配置工要想做好,工必先利其器。要想顺利使用git管理代码,首先要在本地下载并配置好自己的git环境。下载git工具,到git官网根据电脑系统选择对应的版本。配置和ssh账号信息,在命令行输入配置git账号信息并查看。当然git账号信息的配置也分为项目级和系统级,采用就近原则(项目级优先于系统级,两者有时都使用项目级签名)。如果只有系统级,则以系统级为准,但不允许两者都不是。通常设置系统级的账户信息即可。//创建系统级账户信息$gitconfig--globaluser.name"我的名字"$gitconfig--globaluser.email"我的邮箱"//查看系统级账户信息$gitconfig--globaluser.name$gitconfig--globaluser.email项目账号信息存放在.git/config文件中,系统账号信息存放在~/.gitconfig中。//创建项目级账号信息$gitconfiguser.name"myname"$gitconfiguser.email"myemail"//查看项目级账号信息$gitconfiguser.name$gitconfiguser.email3.在本地生成sshkey,进入执行ssh-keygen-trsa-C"xxxxx@xxxxx.com",如果执行成功,切换到~/.ssh目录,输入命令查看vim~/.ssh/id_rsa.pub。当然你也可以用windows电脑找c盘下的文件:4.将公钥复制到github、gitlab、码云等git仓库(切记三个平台可以使用同一个公钥)5.查看sshkey是否配置成功//码云ssh-Tgit@gitee.com//嗨涵美眉!您已成功通过身份验证,但GITEE.COM不提供shellaccess。表示连接成功//githubssh-Tgit@github.com//嗨涵美眉!您已成功通过身份验证,但GitHub不提供shellaccess。表示连接成功。经历了以上五步,你就顺利的完成了git环境的配置,可以愉快的玩git了。你之所以配置这么多,是因为它可以让你避免使用需要频繁输入账号和密码的https方式。具体来说,通过ssh配置git可以将本地私钥与远程仓库配置的公钥进行匹配,判断是否是一对密钥,可以提高你的开发效率。前面只是开胃菜,接下来就是主菜了,硬菜和干货。2.git简介一句话:git是一个开源的分布式版本控制系统,可以敏捷高效的处理任何项目。git的特点git的核心特点是分布式,其实就是去中心化,削弱了它们之间的依赖。它以元数据的形式存储内容数据,通过SHA-1哈希算法将文件的元数据隐藏在.svn、.cvs等文件中。git的其他几个特点是:协同修改,多人并行修改同一台服务器上的同一个文件。数据备份不仅保存了目录和文件的当前状态,还保存了每次提交的历史状态。版本管理,保存每个版本的文件信息时,需要重复保存数据,节省存储空间,提高运行效率。访问控制,对团队成员进行访问控制,对团队外开发人员的代码进行审核和提交。历史记录,查看修改人、修改时间、修改内容、日志信息等,将本地文件恢复到某个历史状态。分支管理让开发团队在工作过程中可以在多条生产线上并行工作,提高工作效率。Git的工作区和进程关于git的工作方式和代码管理,首先要了解git的工作区是如何划分的,这样我们才能在合适的区域使用合适的命令。本地系统中的git分为:工作区、暂存区和本地库(repository),它们的大致作用如下:工作区(Workspace):是本地系统的文件目录,在运行时可以看到当前开发进程最新代码暂存区(Index):执行gitadd命令后,工作区中的文件暂存到暂存区,暂存区会对当前移动的文件进行标记和索引,告知这些文件由git管理。(在实际开发中,应该养成使用git暂存代码的好习惯,在完成某个需求或功能后立即使用gitadd提交到暂存区,防止自己随手删除自己的手)。本地库(Respository):本地系统将开发项目的历史版本存储为本地仓库。执行gitcommit命令后,提交暂存区的内容会存储到本地仓库中。在本地系统的git工作区,在上图所示的流程中,我们可以看到本地库也存储在栈中,最后提交的文件会存储在栈顶,并且git回滚时得到的head文件,也是文件最后一次提交的内容。当然,只把项目文件存放在本地仓库是没有任何意义的。使用git的目的不就是为了协同开发吗?然后我们应该将代码从本地库上传到远程库。远程库(Remote):用于托管代码的服务器,作为远程??仓库使用。通过执行gitpush命令,将代码从本地库同步到远程库,从而实现仓库内容分布在多个位置、多台电脑协同运行。完成git工作区简单来说,git的工作流程是:在工作区修改和添加文件,通过gitadd将工作区的代码添加到暂存区,将暂存区的文件提交到暂存区存储区通过gitcommit本地仓库通过gitpush将本地仓库的修改推送到远程仓库,方便分布式协同工作。3.常用的git命令git的工作就是创建并保存项目的快照,并与后续的快照进行比较。接下来,让我们来练习一下git的常用命令。创建本地仓库并链接远程仓库gitinit:在项目目录下创建本地仓库gitremoteaddorigin:将本地仓库与远程仓库链接,origin默认为远程仓库的别名url查询操作文档查询githelp(--help):查询git命令的帮助信息githelp-a:查询git命令所有信息的列表outline:查看git操作日志文件并提交gitcommitgitcommit:提交临时文件到本地库,会打开一个编辑器进行编辑。gitcommit-m"filenamemessage":将临时文件提交到本地库,并记录提交文件的注释。gitcommit-am:提交临时文件到本地库,相当于gitadd。&&git提交-m。gitcommit--amend:提交临时文件到本地库,修改最新的commit信息,修改commit的hash值。拉取文件gitpullgitpull::从远程仓库拉取代码并合并到本地工作空间。当然dailypull可以简写为gitpull,相当于gitfetch&&gitmerge。gitpull--rebase::使用rebase方式合并拉取远程变更的文件就是将指定分支的所有文件合并到本地,而gitfetch是拉取指定分支的更新文件,但不会合并。gitfetch<远程主机名><远程分支名>:<本地分支名>:从远程仓库拉取指定分支的更新内容到本地指定分支。gitfetch--all:从远程仓库分支管理中拉取所有分支的更新内容gitbranch:查看本地分支gitbranch-r:查看远程分支gitbranch-a:查看本地和远程分支gitcheckout:from将当前分支切换到另一个分支gitcheckout-b:创建并切换到一个新的分支gitbranch-d<要删除的分支名称>:删除指定的本地分支gitmerge<指定的分支名称>:合并当前分支与指定分支合并gitbranch-m:,将旧分支名更改为新分支名gitbranch--merged:查看当前合并了哪些分支branchgitbranch--no-merged:查看当前有哪些分支没有和当前分支合并gitbranch-v:查看每个本地分支最后提交对象的信息gitbranch-b<本地分支名><远程分支名>,拉取远程Branch,创建本地branchundooperationgitcheckout--:撤销对工作区的修改操作gitresetHEAD:撤销对暂存区的最后一次commit操作(不会覆盖工作区)gitreset--(soft|mixed|hard)|:回滚当前代码到指定版本--hard指回滚所有代码,包括HEAD、index、workingtree--mixed指回滚部分代码,包括HEAD、index--soft指只回退到HEAD差异比较gitdiff:用于比较当前工作区和暂存区的文件差异gitdiff--cached:比较暂存区上次commit提交的内容和本地库gitdiffHEAD:比较工作区和本地库在最新commit中提交的内容的思维导图总结,是作者在实际开发和阅读文章中总结的。可以让你快速上手git开发,事半功倍。希望对您的工作和招聘有所帮助。帮助。