以下文章来源于:公_众_号开源电子网 读取更多技术文章,请扫码关注
随着这几年 GitHub 的流行,Git 已经是一个程序员逃不过的技术项,但很多人却纷纷倒在了学习它的路上。而且,出于工作原因而不得不用 Git 的人,有不少在工作中对 Git 也是能不用就不用,生怕哪个命令用错就把公司的代码库毁掉了。而那些对 Git 掌握得比较好的少数人,就像团队中的神一样,在同事遇到 Git 相关的问题的时候用各种风骚操作来拯救队友于水火,学不会、学不好 Git 的人,其实多数并不是不愿意学。很多人都会尝试去网上找 Git 教程、去社区请教高手、在公司咨询同事,但转了一大圈下来,依然没有搞懂,甚至有可能越来越糊涂。 Git是目前世界上最先进的分布式版本控制系统。通俗来讲让开发人员能够更加方便的查看和操作你开发的项目的一种工具。
为什么要学习Git或者svn:现在很多物联网企业招聘嵌入式工程师时候,必须具备的硬性的要求,那就是掌握Git或者svn的操作。 Git或者svn区别? SVN:是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
Git:是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
git官网:https://git-scm.com/,安装步骤:无脑下一步就行了。
Git常用的命令:git init //初始化并创建一个仓库 git add //添加所有文件到暂存区 git commit -m “提交说明” //提交暂存区中的内容到本地仓库 git log //查看提交的版本 git status //查看所有文件的状态 git status [filename] //查看指定文件的状态
Git基本的操作:第一步:git init----创建仓库
在指定的代码工程,右键打开Git Bash Here输入git init命令创建一个仓库。
第二步:git add *加所有文件到暂存区
红色代表没有提交到仓库中,只是存储在暂存区
第三步:git commit -m “提交说明” 把暂存区中的内容到本地仓库
显然它们变绿色了,证明已经提交到本地仓库当中。
如果我们修改某一个文件,会发生什么?
显然readme.txt文件显示红色了,首先把该文件到暂存区,然后把暂存区中的内容到本地仓库。
注意:先使用git add * 或者 git add readme.txt把该文件提交到暂存区,然后使用git commit -m "提交说明" 把暂存区中的内容到本地仓库。
第四步:使用 git log 查看提交的历史记录
上述可知:
“修改了readme.txt“版本的ID是5fc7b03da38936495c87b971fd3c41a96aa5d191。 “第一次创建Git”版本ID是6c3cc9324b5c42689f37efabda7f40a18f612ab2。 怎么返回上一个版本呢? 两种方法: 第一种:git reset --hard HEAD^退回上一次的提交的版本,例如目前是“修改了readme.txt版本“,然后上一个版本是“第一次创建Git”
第二种:git reset --hard commit id(commit id为版本ID)
“修改了readme.txt“版本的ID是5fc7b03da38936495c87b971fd3c41a96aa5d191。 “第一次创建Git”版本ID是6c3cc9324b5c42689f37efabda7f40a18f612ab2。 注意:commit id填写前五位即可:
- 分支与合并:
分支:从master(主树干)分离出来的,显然一开始肯定是拷贝一模一样的工程,然后后期我们在分支修改的代码,不影响其他分支的代码和主树干的代码,这里必须要注意。 合并:必须主干和dev(分支)合并,不能同级的分支与分支合并,这里必须注意。 注意:合并分支必须HEAD指向主干才能合并指定的分支,不能HEAD指向分支合并同级分支操作。
当HEAD指向der,只能和1分支合并,不能同等级的分支,当HEAD指向master可以与der、der1、der2、1、2、3分支合并。 2. Git分支与合并相关命令:
git branch //查看本地分支
git branch [branch-name] //新建一个分支,但依然停留在当前分支
git checkout -b [branch] //新建一个分支,并切换到该分支
git checkout [branch-name] //切换到指定分支,并更新工作区
git branch -d [branch-name] //删除本地分支
git merge [branch] //合并指定分支到当前分支
-
Git分支与合并实验 第一步:git branch [branch-name]创建分支
这里我们创建了三个分支,但是目前HRAD还是指向Master(主树干)。 第二步:git checkout [branch-name]切换指定得分支
原本指向master(主树干),显然现在指向dev分支。 注意:分支修改了工程的代码,不能影响master主树干的工程的代码 第三步:git merge [branch]合并操作 例如我们在dev的分支的readme.txt修改为890,而主树干(master)的reame.txt为12345678,那么我们把dev和master合并,readme.txt文件会发生什么呢。
显然主树干(master)的reame.txt为12345678内容修改成890。 掌握知识:
当HEAD指向der,只能和1分支合并,不能同等级的分支,当HEAD指向master可以与der、der1、der2、1、2、3分支合并。
如何本地仓库上存远程仓库必须掌握的网络常用命令解析 git clone [url] //获取网络上的远程仓库 git push origin 本地分支名字:gitee网络分支 //把当前分支放到网上,如网络分支不存在则网络端自动创建一个分支! git push origin -d BranchName //删除远程分支 ssh-keygen -t rsa //生成本机rsa加密密钥
① 本地仓库和远程仓库连接必须绑定自己的电脑 远程仓库:gitlab、github、gitee。(由于github是外国网址,所以速度较慢),所以我们使用Gitee作为我们的远程仓库。 ② 打开Gitee的官方网址为:https://gitee.com/注册账号(自行注册)
③ 远程仓库绑定本地主机 第一步:找到C盘路径下的.ssh文件夹,小编是:
第二步:右键打开“Git Bash Here” 在命令行窗口输入“ssh-keygen -t rsa”回车确定后,一直默认按回车即可:
.ssh文件夹下多了两个文件:
第三步:使用3. 用”记事本”或者”Notepad++”打开“id_rsa.pub”文件,复制里面的内容到Gitee仓库安全设置“SSH公钥”
第四步:确定并输入密码,然后出现您当前的SSH公钥数:
④ Gitee上创建一个仓库,并将它复制到本地,然后实现云端和本地的同步!步骤如下所示: 第一步:Gitee上创建一个仓库:
第二步:填写仓库的相关信息,(开源许可证根据自己的情况选择),读者也可以选择“许可证向导”查看所有的许可证的区别!
点击创建,此时Gitee会自动跳转到新创建的仓库! 第三步:点击“克隆/下载”,然后选择HTTPS协议,复制下载链接,然后在我们的工程右键打开“Git Bash Here”,输入git clon [url] 获取网络上的远程仓库:
在这里插入图片描述
显然我们在工程发现一个文件夹:
第四步:把所有的文件夹放到xiaofeng_test文件夹中:
第五步:右键打开Git Bash here,输入“git add *”,然后输入“git commit -m “名称””提交版本:
⑤ 如果我们创建分支会发生什么?
“git push origin 本地分支名字:gitee网络分支”:
第一步:打开远程仓库,获取相应的SSH:
第二步:在本地创建一个文件夹,右键打开“Git Bash Here”输入“git clone SHH”:
Git的用法是非常实用的,一般企业要求会操作Git,在企业中,我们的项目工程一般在远程仓库获取,然后写完代码就必须提交给远程仓库,这样管理人员很简便知道自己修改了什么,也可以返回上一次修改的地方,不需要传统做一个版本就复制一份工程,导致我们工作效率非常的低下。