Git
1、Git与SVN的区别
Git是一个开源的分布式版本控制系统,它采用了分布式版本库的方式,不用服务器端软件的支持。
Git不仅仅是个版本控制系统,它也是个内容管理系统,工作管理系统等。
· Git是分布式的,SVN不是;
· Git把内容按元数据方式存储,SVN是按文件存储;
· Git分支和SVN的分支不同;
· Git没有一个全局的版本号,SVN有全局的版本号;
· Git的内容完整性要优于SVN,Git的内容存储使用的是SHA-1哈希算法,这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏;
· Git并不像SVN那样有个中心服务器。
2、Git工作流程
· 克隆Git资源作为工作目录
· 在克隆的资源上添加或修改文件
· 如果其他人修改了,你可以更新资源
· 在提交前查看修改
· 提交修改
· 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交
3、Git工作区、暂存区和版本库
工作区:Git在电脑里能看到的目录。
暂存区:英文叫stage或index,一般存放在.git目录下的index文件中,暂存区有时也叫做索引。
版本库:工作区有一个隐藏目录.git,它是git的版本库。
4、Git创建仓库
Git使用git init命令来初始化一个Git仓库,Git的很多命令都需要在Git的仓库中运行,git init是使用Git的第一个命令。在执行完git init命令后,Git会生成一个.git目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。
创建Git仓库
· 使用当前目录作为Git仓库,我们只需使它初始化:
git init
该命令执行完成后会在当前目录生成一个.git目录。
· 使用指定目录作为Git仓库:
git init 目录名称
初始化后,会在那个目录下出现一个名为.git的目录,所有Git需要的数据和资源都存放在这个目录中。
· 如果当前目录下有几个文件想要纳入版本控制,需要先用git add命令告诉Git开始对这些文件进行跟踪,然后提交:
git add *.c
git add README
git commit -m '初始化项目版本'
以上命令将该目录下以.c结尾及README文件提交到仓库中。
Git克隆
我们使用git clone从现有Git仓库中拷贝项目(类似svn checkout)。在git clone时,可以用不同的协议,包括ssh、git、https等,其中最常用的是ssh,因为速度较快,还可以配置公钥免输入密码。
克隆仓库的命令格式为:
git clone 仓库地址
如果我们需要克隆到指定目录,可以使用下面的命令格式:
git clone 仓库地址 本地目录
Git配置
Git的设置使用git config命令。
显示当前的Git配置信息,命令如下:
git config --list
编辑Git配置文件:
git config -e #针对当前仓库
git config -e --global #针对系统上所有的仓库
设置提交代码时的用户信息:
git config --global user.name "你的用户名"
git config --global user.email 你的邮箱
如果去掉–global参数则只对当前仓库有效。
5、Git基本操作
GIT的工作就是创建和保存你项目的快照及与之后的快照进行对比。
Git常用命令
· 创建仓库命令
git init #初始化仓库
git clone #拷贝一份远程仓库,也就是下载一个项目
· 提交与修改命令
git add #添加文件到仓库
git status #查看当前仓库的状态,显示有变更的文件
git diff #比较文件的不同,即暂存区和工作区的差异
git commit #提交暂存区文件到本地仓库
git reset #回退版本
git rm #删除工作区文件
git mv #移动或重命名工作区文件
· 提交/查看日志命令
git log #查看历史提交记录
git log --oneline #查看历史提交记录的简洁的版本
git log --graph #查看历史中什么时候出现了分支、合并
git log --reverse #逆向显示所有日志
git log --author=用户名 #查找指定用户提交的历史记录
git blame 文件名 #以列表形式查看指定文件的历史修改记录
· 远程操作命令
git remot #查看当前远程仓库
git remot add 仓库名 仓库url #添加一个新的远程仓库
git remot -v #查看远程仓库信息
git fetch #从远程获取代码库
git pull #下载远程代码并合并
git push #上传远程代码并合并
git push 远程仓库名 分支名 #将这个分支与数据推送到远程仓库
git remote rm 仓库名称 #删除远程仓库
6、Git分支管理
使用分支的好处:使用分支可以从开发主线上分离出来,在不影响主线的同时继续工作。
· 创建分支命令:
git branch 分支名称
· 切换分支命令:
git checkout 分支名称
当你切换分支的时候,Git会用该分支的最后提交的快照替换你的工作目录的内容,所以多个分支不需要多个目录。
· 创建新分支并切换到该分支命令:
git checkout -b 分支名称
· 合并分支命令:
git merge
· 列出分支:
git branch
没有参数时,git branch会列出你在本地的分支。
· 删除分支命令:
git branch -d 分支名称
7、Git标签
我们可以给项目的重要阶段,重要的提交快照,使用git tag给它打上标签。
例如,我们给项目打上一个1.0版本,则命令如下:
git tag -a 1.0
当执行git tag -a命令时,Git会打开你的编辑器,让你写一句标签注解。
给项目追加标签命令如下:
git tag -a 版本号 项目名
查看所有标签命令:
git tag
指定标签信息命令:
git tag -a 版本号 -m 版本信息
删除标签命令:
git tag -d 版本号
查看此版本修改的内容:
git show 版本号