简介
Git是目前世界上最先进的分布式版本控制系统(没有之一),用于敏捷高效地处理任何或小或大的项目。
它采用分布式版本库的方式,不需要服务器端软件的支持。
与 SVN 区别点
专业叙述:(参考菜鸟教程:http://www.runoob.com/git/git-tutorial.html)
-
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哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
- 简单易懂的大白话:(http://blog.youkuaiyun.com/free_wind22/article/details/50967723)
-
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
安装
windows: 点击安装包,一路next,可更改路径,直接install。 git bash–》输入 git –version 回车–》显示版本号
mac: sudo apt-get install git
使用
一、创建本地邮箱和本地仓库:
git config –global user.name “****” 回车 git config –global user.email “****@163.com” 回车
查看配置信息:
git config –list //最后两行显示username和useremail
显示当前的文件路径:
pwd
二、创建仓库:
1> 在d盘创建git-zhou
2> cd d: //打开d盘
3> cd git-zhou //打开git-zhou文件夹
4> mkdir myproject //在git-zhou文件夹下面创建myproject文件夹
5> cd myproject //打开myproject文件夹
6> git init //将当前文件夹初始化为仓库 (git init myproject //将指定文件夹初始化为仓库) ==》git自动创建唯一一个master分支
三、sublime打开myproject 创建readme.txt 写入几句话(随意)
1> git add readme.txt //将修改的文件添加到缓冲区
2> git commit -m “本次提交的说明” //提交更改,可以一次性把缓冲区的所有修改提交到当前分支; //提交成功后,缓冲区就没有任何内容了。
3> git status //查看上次提交之后的修改状态
4> git diff //查看尚未缓存的改动(尚未add操作)
git diff –cached //查看已经缓存的改动
git diff HEAD //查看已经缓存和未缓存的所有改动
git diff –stat //查看摘要信息
5> git log //显示从最近到最远的提交日志,可以查看提交历史和版本号
//–pretty=oneline 在一行显示
6> git reset –hard HEAD^ //回退到上一个版本
–hard 版本号 //回退到指定的版本
git reset HEAD readme.txt //也可以把缓冲区的修改撤销掉
7> git checkout — file //把文件在工作区的修改全部撤销
1)文件自修改后还没有被放到缓冲区,现在撤销修改就回到和缓冲区一模一样的状态 2)文件已经添加到缓冲区后,又做了修改,现在,撤销修改就回到添加到缓冲区后的状态。
git checkout master //切换分支
8> git reflog //用来记录每一次命令,可以重返到未来的某个版本。
9> rm readme.txt //在文件管理器中删除文件
git rm readme.txt //在仓库中删除文件,之后提交 git commit
四、远程仓库
1、创建SSH Key
ssh-keygen -t rsa -C “60…..@163.com” //一路回车,然后–>>
–>> C盘 –>> .ssh –>> SSH Key 的密钥对:id_rsa (私钥)和 id_rsa.pub (公钥)
2、登录GitHub –>> Account settings –>> SSH and GPG keys –>> New SSH Key –>> 填任意title
–>> 在Key文本框里粘贴 id_rsa.pub 文件的内容(可添加多个key)
3、在GitHub里 New repository –>> name –>> create repository
4、链接本地与github账号(远程库的名字:origin)
git remote add origin git@github.com:****/myproject.git
如果写错链接,需要清除链接 –>> git remote rm origin
5、将本地的文件推送到远程库上(-u 第一次放入,之后不用写) git push -u origin master //实际上是把当前分支master推送到远程
6、SSH警告:第一次使用Git的clone或者push命令链接GitHub时,会得到一个警告,
确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,yes即可。
修改文件同步到github(已连接):
1>git add readme.txt 2>git commit -m “” 3>git push -u origin master
从github上克隆到本地仓库: =>git clone git@github.com:***/testClone.git
五、创建分支 //在Git里,目前只有一个分支,叫主分支,master分支。
1、创建并切换到分支dev:
git checkout -b dev
2、创建分支:
git branch dev
3、切换分支:
git checkout dev
4、查看当前分支:
git branch //会列出所有分支,当前分支前会标一个*号
5、切换到主分支后,看不见在分支dev里修改的内容,需合并dev分支到主分支master:
git checkout master
git merge dev
6、删除分支:
git branch -d dev
=>cat readme.txt //查看readme.txt的内容
六、标签管理
1、创建标签
git tag v1.0 //需切换到要打标签的分支上
2、查看所有标签
git tag
3、查找历史提交的commit id
git log –pretty=oneline –abbrev-commit
4、给历史的commit id打标签:
git tag v1.0 版本号的前几位字符
5、查看标签信息:
git show v0.9 //标签是按字母顺序排序的,不是按时间顺序列出
6、删除本地标签
git tag -d v0.1
7、推送标签到远程:
git push origin v1.0
一次性推送全部尚未推送到远程的本地标签:
git push origin –tags
8、删除远程标签:
git tag id v0.9 //先从本地删除
git push origin :refs/tags/v0.9 //从远程删除