Git 版本管理器
想必各位都有过丢代码,或者代码因为经过几个修改过后觉得第一版的代码更好,想返回第一版的代码时既然找不到代码了的经历。所以为了避免类似的事情发生我们开发人员必定得学会 Git 版本管理器的使用。
Git 是一个分布式版本管理工具,Git 把更多的内容放在了本地仓库,让本地仓库有了更多的权限,从而不占用网络资源快速地在本地创建各种版本信息,在最终确定版本之后进行统一地推送,提高了版本管理效率,减轻了网络资源负担。
Git 学习方法
- 本地仓库
- 远程仓库
- 分支管理
- 多人协作
Git 本地仓库
本地仓库包含
工作区
,暂存区
,本地仓库
工作区
其实工作区说白了就是我们看得见摸得着可以更改的代码, 基于后面版本的概念我们才会独立出这样一个新的名词,所以这个是最容易理解的东西即:你所能看到,可以更改的代码即为工作区
暂存区
这个地方是用于存储索引的, 用于决定我们管理那些版本的管理,哪些不需要。因为在项目中我们不需要把所有内容都放进版本仓库之中,版本仓库应该只存储我们项目中改变的代码,而一些工具类内容则不需要放入其中。
本地仓库
顾名思义本地仓库就是存放我们本地的代码的地方,这个是储存代码和生成版本的地方,位于本机硬盘。
创建本地仓库
我们的版本管理系统是以文件夹 (项目)为单位进行版本管理的,所以我们建立的仓库应该在项目的根目录之中 :
git init
这个指令会创建一个隐藏文件夹, 这个隐藏文件夹是本仓库版本管理系统的全部文件,删除之后可以重新建立新的仓库,当然也意味着本机的所有版本信息,暂存信息,全部消失。
放入暂存区
git add -A
这个指令会把所有的代码放入到暂存区,暂时性的存储起来,这个指令一般和 commit
提交版本指令一起操作。
提交版本
已经决定了哪些文件是可以进行版本管理的,那么之后我们便可以对在暂存区中的内容进行提交并生成一个本地仓库之中的版本,注意在此之前我们是 没有在本地仓库产生一个版本的 。
git commit -m "提交注释:这个注释为必须 ,在注释中你要写明你做了哪些改动,因为在版本达到一定数量级的时候,你是无法通过版本号分辨版本的,只能通过注释分辨版本"
执行成功后说明我们的代码已经存放入本地仓库。
注意 : 如果在执行指令的过程之中出现了如下提示:
Author identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
O
- 出现如下提示是因为我们没有设置全局的用户信息! 我们需要设置全局信息之后再去执行
add
+commit
入库操作!
执行指令 1 : `git config --global user.email "you@example.com"`
执行指令 2 : `git config --global user.name "Your Name"`
- 执行结束之后没有任何提示, 重新执行
add
,commit
执行没有please tell me who you are
这个提示信息就可以了! - 如果填写错误可以重新执行指令覆盖之前的设置!
查看版本
git reflog
查看我们最近提交的版本号
版本还原
版本还原前提是你必须在本地仓库之中拥有这个版本,我见过最神仙的操作就是刚刚建立好 git 仓库然后直接把全部项目代码删除了,居然还想要还原 。记住我们在没有提交过版本的情况下是没有办法恢复的。
git reset --hard 版本号
总结
指令非常简单 : add
,commit
,reset
共三个,如果你了解了全部概念结合下图,很容易可以学会git工具本地的使用了。
线上仓库
线上仓库顾名思义就是把你的代码存在云端,这样大大提高了源码存放的安全性,因为你不能保证你的电脑永远不损坏,国内有 Gitee 仓库(码云), 国际上有 Github 仓库(全球最大的开源仓库),都可以免费对私人和企业代码进行远程托管,当然因为 GitHub 的服务器在国外所以网络常常不稳定,网络条件不好的小伙伴推荐使用 Gitee(如果会大家会科学上网就当我没说),这些线上的开源社区中也存在大量的代码供我们学习交流使用,我们也可以开源属于我们的代码,进入一个更大的世界。
远程仓库
开源仓库和私有仓库
- 开源仓库 : 在当前平台可以被所有人查看下载的代码!
- 私有仓库 : 只有你能看到的代码,别人是无权访问的! (在公司里面开发的代码必须使用私有!)
- 根据情况合理选择仓库状态!
新建项目
到此为止,你已经拥有了一个属于你的远程仓库了。
提交远程仓库
- 按照上一章节学习内容创建你的本地仓库,创建结束之后在此进行远程仓库链接简写
git remote add origin 你的仓库的名字
这个表示给远程仓库 命名为 origin 以后提交的时候这个链接也可以直接使用 origin代替。当然除了origin你还可以随意取名,比如说 o , ori , myOrigin .... 发挥你的想象力,这个只是一个变量名而已。
- 然后你就可以吧本地仓库中的所有版本内容推送到线上了。
git push -u origin master
在这里 origin
是我们在 remote add
时添加的远程仓库名称,master
是分支,我们会在后面章节对分支进行讲解。
如果在这里提示输入账号密码,正常输入账号密码即可。
到了这里你可以在线上仓库刷新一下,并看到,你的项目已经提交上去了。
拉取
如果我们需要拉取线上的代码继续开发,那么这个时候我们就需要从远程仓库对代码进行拉取,从而得到之前的代码,版本信息和分支,以便于继续进行开发。
拉取分成两种形态即为 clone
, pull
, 这两种拉取方式在用途方面的区分也比较明确,下面我们来看一下这几个拉取方式的区别。
clone 克隆项目
clone 操作会将线上仓库完整拉取到本地,也就是说你会得到一个和线上一模一样的项目,同时clone操作会建立一个项目文件夹对项目进行包裹。
我们建议 : 在创建仓库的初期使用clone操作,拉取完整线上代码便于继续开发
$ git clone 仓库地址
pull 拉取操作
pull 操作会将远程仓库的最新代码放入工作区。
git pull 仓库地址(可选,默认拉取仓库origin之中的代码)
如果有冲突的话会优先 自动合并(auto merge) , 如果自动合并失效,需要手动合并,我们可以根据 VSCODE
自带工具进行手动合并。但是请注意,如果pull之后 自动合并成功会产生一个新的版本,但是 手动合并则不会产生新的版本,需要自行提交之后才会产生新的版本 。
也就是说,手动合并之后我们需要重复 add
commit
操作,确保本地仓库产生版本之后再做后续擦操作。
- 在新的一天开始时,不知是否有人更新过代码,那么我们在开发之前应该先执行以下
git pull
再进行今天的开发。 - 在工作结束准备提交代码的时候,我们在
push
之前应该也先pull
拉取最新代码,进行合并之后进行提交。
注意不要随意使用 push --force
指令进行强制提交,这样的话会覆盖团队中其他人的代码哦,不拍被干当我没说。