揭开git的神秘面纱
前言:
今天,闲来没事,我想为大家分享一下git的基本概念,以及git的初级语法,讲的不好,希望大家不要介意哈。
GIT:
什么是git了
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
为什么要使用git:
git是个内容管理系统(CMS),也是版本控制系统,在团队合作开发,公司项目相关业务管理方面起了至关重要的作用,git的出现,不仅提高了组织团队之间协作开发的效率,更提高了公司项目的高效管理,怎么说了,在以前,多个人开发合作的时候,要把大家每天工作的具体内容合并,可不是一件那么容易的事,在这些开发工具没有出现以前,相信大货都是以外部存储的方式,拷贝来拷贝去,从而合并大家的工作,可是,这种方式效率实在是太低下,有时间,空间和区域的限制,git的出现,就解决了团队合作间协同合作因为时间,空间,区域限制等因素带来的不变,大家只需要把自己每天的工作内容,push到共有的远程厂库即可,这样队友就只需要push下来,合并,解决对应的冲突,然后再次push远程即可,方便组内其他同事工作内容的合并。大大提高了开发效率。
当然,现在常用的版本控制有很多,比如常见的github,svn,cvs,subversion...等,他们的出现都是为了解决团队开发,项目管理效率低下的问题。具体使用哪种工具,这里要更具公司业务要求,以及自己的选择了,但是,作为开发者,个人觉得,最好每一种都会使用才最好,下面,我就详细的描述他们之间的差异,方便初学者的选择和学习等
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持
Git 与 SVN 区别
GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征。
Git 与 SVN 区别点:
1、GIT是分布式的,SVN不是:这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。
2、GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。
3、GIT分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录。
4、GIT没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。
5、GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
git常用语法命令
在使用git前,需要在自己本地安装git,具体的安装非常的简单,只需要去Git官网下载对应系统的安装包即可,安装过程基本都是下一步,下一步,直到finish。
git官网在这里:https://git-scm.com/,实在不知道咋安装的,知己百度吧。
下面,我就介绍常用的git命令,带领大家,建立为一个自己的git项目,这里是Windows环境下。
1、在Windows上安装Git
安装完成后,还需要最后一步设置,在命令行输入:
gitconfig–globaluser.name“YourName”gitconfig–globaluser.name“YourName” git config –global user.email “email@example.com”
2、创建版本库
首先,选择一个合适的地方,创建一个空目录:
$ cd /d/appData
$ mkdir gitRepo
$ cd gitRepo
$ pwd
/d/appData/gitRepo
##pwd命令用于显示当前目录
然后,通过git init命令把这个目录变成Git可以管理的仓库:
$ git init
Initialized empty Git repository in /d/appData/gitRepo/.git/
3、把文件添加到版本库
$ git add index.txt
$ git commit -m "add index.txt"
## add 命令把文件提交到缓存区
## commit 把缓存区文件提交到版本库,-m 参数是指定comments
## 可以add多次,一次commit
4、查看版本库状态
$ git status
该命令查看到的结果分为两部分:
一,add到缓存区内等待被commit到版本库的更改。
二,工作区内的还未add到缓存区的更改
- 1
- 2
- 3
- 4
- 5
5、查看工作区更改内容
$ git diff index.txt
$ git diff HEAD -- index.txt
$ git diff --cached index.txt
$ git diff 287d9bd -- index.txt## 1、git diff:工作区和缓存区比较
## 2、git diff --cached:缓存区和HEAD比较
## 3、git diff HEAD:工作区和HEAD比较
## 4、git diff commitID:工作区和某一版本的比较
6、查看commit历史记录
$ git log
commit 287d9bd301f8aa18d638021926ae690b6ba35507
Author: rchm <rchm8519@sina.com>
Date: Sat Apr 25 16:50:58 2015 +08005 查看工作区更改内容commit 53468841ca9e73786567772efbbaafdfe6a30482
Author: rchm <rchm8519@sina.com>
Date: Sat Apr 25 16:22:49 2015 +0800add index.txtcommit 17a85a95ef019058f04d320a157ef5a218d069f2
Author: rchm <rchm8519@sina.com>
Date: Sat Apr 25 15:58:17 2015 +0800add of files
## 其中 287d9b... 一串字符 叫做 commit_id 版本号
## 如果信息太多,想要显示简洁一写,可以试试加上--pretty=oneline参数:
$ git log --pretty=oneline
287d9bd301f8aa18d638021926ae690b6ba35507 5 查看工作区更改内容
53468841ca9e73786567772efbbaafdfe6a30482 add index.txt
17a85a95ef019058f04d320a157ef5a218d069f2 add of files
- 7、版本回退
$ git reset --hard HEAD^
## git中用HEAD表示当前版本,HEAD^表示上一版本,HEAD^^表示上一版本HEAD~100表示上100个版本
## 或者直接指定版本号(不用全输,只许前面几位即可)$ git reset --hard 534688
## 如果要单独回退某一个文件,可在最后加上文件名称,但不能加 --hard参数
$ git reset HEAD^ index.txt
8、撤销回退
当使用reset命令回退到以前的版本后,发现回退多了,或者想撤销回退操作
那只能使用指定版本号的方式了
可是git的版本号这么变态,谁能记得住?好吧,git帮你记!
查看版本号的命令:
$ git reflog
6163ac9 HEAD@{0}: reset: moving to 6163ac
287d9bd HEAD@{1}: reset: moving to HEAD~2
6163ac9 HEAD@{2}: commit: ##
186103f HEAD@{3}: commit: 7 版本回退”
287d9bd HEAD@{4}: commit: 5 查看工作区更改内容
5346884 HEAD@{5}: commit: add index.txt
9、废弃工作区修改
## 单个文件废弃
$ git checkout -- index.txt
## 整个工程废弃
$ git checkout -f
## 这个命令会把你工作区中的修改回退到最后一次add命令之前的状态
## 即如果缓存区有内容,则回退到和缓存区一直
## 如果缓存区为空,则回退到和版本库一致
- 10、把缓存区内容撤回工作区
$ git reset HEAD index.txt
## 该命令的执行不会使工作区中新的更改丢失
11、文件删除与找回
$ git rm index.txt
## 该命令执行后,工作区内文件直接删除,操作指令放到缓存区
## 若执行commit,则版本库中文件被删除
## 若想取消删除,则需要先执行reset HEAD命令,再执行checkout命令找回
## 若执行commit,从版本库删除后,还想找回被删文件,这时HEAD版本中已经没了
则需要先执行reset HEAD^ 命令,从上一个版本号回退,再执行checkout命令找回
12、Git远程仓库
GitHub是一个提供Git仓库托管服务的网站
参考文档:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374385852170d9c7adf13c30429b9660d0eb689dd43a000
一、注册GitHub网站
二、创建SSH Key$ ssh-keygen -t rsa -C "youremail@example.com"##命令执行成功后,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,##这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
三、设置SSH Key登陆GitHub,打开“Account settings”,“SSH Keys”页面:然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容;
13、添加本地仓库远程
在GitHub上创建一个新的仓库后,可以把本地仓库的内容推送到GitHub仓库
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
14、克隆远程仓库到本地
首先你要知道一个远程仓库的地址,然后
$ git clone git@server-name:path/repo-name.git
##Git支持多种协议,默认的git://使用ssh,也可以使用https等其他协议,
##但通过ssh支持的原生git协议速度最快
这里只是Git的基本入门,只介绍了一下git基本命令,想要学习的更加深入,小编就推荐几篇好的博客地址吧:
Git 完整命令手册地址:http://git-scm.com/docs
PDF 版命令手册:github-git-cheat-sheet.pdf
菜鸟教程:http://www.runoob.com/git/git-tutorial.html点击打开链接
我的git:点击打开链接
git官网帮助文档:点击打开链接
揭开git的神秘面纱相关推荐
- 了解黑客的关键工具---揭开Shellcode的神秘面纱
2019独角兽企业重金招聘Python工程师标准>>> ref: http://zhaisj.blog.51cto.com/219066/61428/ 了解黑客的关键工具---揭开 ...
- [转]揭开正则表达式的神秘面纱
揭开正则表达式的神秘面纱 关闭高亮 [原创文章,转载请保留或注明出处:http://www.regexlab.com/zh/regref.htm] 引言 正则表达式(regular expressio ...
- 揭开PC-Lint9的神秘面纱
前言 今天,又定位了一个令人懊恼的C++内存使用异常问题,最终结果,竟然是减少接口类的方法后,为了避免编译错误,顺手添加的强制类型转换导致的. 对于这样的问题,我们碰到很多很多次了.没有这样的问题,我 ...
- 未来已来?揭开量子计算机的神秘面纱
从第一台现代计算机ENIAC的诞生到个人PC时代的降临,从互联网概念的提出到移动互联的疾跑,在这个信息年代里,变革正以前所未有的速度改变着我们熟悉的世界.熟悉的生活. 作为个人,我们早已习惯于智能计算 ...
- ASP.NET 运行时详解 揭开请求过程神秘面纱
对于ASP.NET开发,排在前五的话题离不开请求生命周期.像什么Cache.身份认证.Role管理.Routing映射,微软到底在请求过程中干了哪些隐秘的事,现在是时候揭晓了.抛开乌云见晴天,接下来就 ...
- linux操作系统说课稿,信息技术《揭开LINUX的神秘面纱》教案范文
信息技术<揭开LINUX的神秘面纱>教案范文 教学目标: 1.会启动LINUX系统: 2.会关闭LINUX系统: 3.LINUX基本界面的认识. 教学重点: 1.会启动LINUX系统: 2 ...
- 冰河浅析 - 揭开木马的神秘面纱(下)
冰河浅析 - 揭开木马的神秘面纱(下) 作者:· shotgun·yesky 四.破解篇(魔高一尺.道高一丈) 本文主要是探讨木马的基本原理, 木马的破解并非是 ...
- 揭开木马的神秘面纱 2
揭开木马的神秘面纱zz 2 离冰河二的问世已经快一年了,大家对于木马这种远程控制软件也有了一定的认 识,比如:他会改注册表,他会监听端口等等,和一年前几乎没有人懂得木马是什么东 西相比,这是一个质 ...
- 【翻译】揭开HTML5的神秘面纱
写在前面的话: 这篇文章摘自Mozilla官网,主要针对HTML5和本地应用发表了一些.没有设计到技术,所以基本是逐字翻译,但愿我蹩脚的英语水平能把大师的 Chris Heilmann的思想整理明白. ...
最新文章
- Ubuntu 12.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解
- 基于Netty的http服务器
- 使用 /proc 文件系统
- geohash redis mysql_Redis geohash 地理位置存储
- 深度 | EB级规模大数据平台核心技术揭秘(上)
- Python正则表达式去除符号
- Kafka配置broker映射错误报错Discovered coordinator xxx rack: null
- 管理储存组和邮箱数据库
- jquery 手型 鼠标穿过时_css各种手型集合(css禁止手型)-Fun言
- 微信小程序授权订阅消息判断用户取消或允许
- 贪婪算法————背包问题
- 点到点轨迹规划【1】——梯形速度曲线规划
- android 开源库osmdroid绘制点线面(比例尺,缩小放大,导航图标等)
- PTCms小说系统自动在线采集修正版+手机
- Apache commons 实用方法整理(持续更新中)
- hello和dead定时器_BBS,Dead OS和门游戏
- Eclipse注册码
- Apriori算法简介---关联规则的频繁项集算法
- java gdal_2、JAVA集成GDAL-JAVA开发环境整合GDAL
- Unity2018 Asset store下载目录 保存路径
热门文章
- 公众号下载资源汇总(一)
- updating homebrew...一直在等 brew install xxx卡在Updating Homebrew
- ARM三个寄存器 : 堆栈指针SP(R13)、连接寄存器LR(R14)和程序计数器PC(R15)
- 使用carbon_东华大学《Carbon》多孔碳纳米纤维复合膜,优异电磁波吸收性能!
- 开售破发、二手市场跳水 iPhone SE3 “割韭菜”功力大减
- 京东成全国首批支持第三方商家接入数字人民币的企业
- 京东集团副总裁王楠:数智化是打造国际消费中心城市的必由之路
- 英国反垄断监管机构将对音乐流媒体市场展开调查
- 爱奇艺纪录片《棒!少年》《从长安到罗马》入选广电总局“2020年优秀国产纪录片集锦”...
- 再见2G网络!中国联通开始全面退网