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