Git是什么?
Git是应用于多人协同开发的分布式版本控制工具,主要功能是协同开发和版本控制,实现这些功能最主要的部分是版本库。
Git中有如下几个概念容易混淆:
工作区:当前工作目录,开发项目所在的位置。
版本库:由一个一个快照组成的时间轴,每个快照都可以恢复到工作区。
暂存区:存放将要提交的文件。
分支:版本库中最新的快照(默认分支是master)。
远程版本库:与本地版本库连接的其他版本库。
Git模型.png
如何建Git版本库?
第一步 下载Git
根据操作系统下载对应的Git工具,本文只讲windows系统,按提示安装,安装完成开始菜单出现Git文件夹,包含Git bash、Git cmd、Git GUI一项或多项,表示可以用Git默认的bash操作,也可以使用windows的命令行Command或者图形界面GUI操作。
第二步 配置Git
打开Git bash,使用git config 配置工作环境变量,使用--global适用于当前用户的所有项目的配置,使用--system对所有用户使用的配置。
配置当前用户的用户名和电子邮件
git config --global user.name "test"
git config --global user.email "test@example.com"
第三步 建本地版本库
Git是分布式版本控制工具,也就是在本地就可以实现版本控制,包括提交当前版本,回退到之前版本等操作,首先找一想放Git版本库的目录,新建文件夹GitTest作为版本库和工作空间所在目录,使用Git bash执行如下操作:
$cd C:\Users\admin\Desktop\GitTest //GitTest为工作空间
$git init //初始化当前目录并建立版本库(GitTest下创建.git隐藏文件夹就是版本库)
通过以上操作本地就建立了一个版本库,现在就可以在这个文件夹下编辑文件了。
第四步 建远程版本库
在github(代码托管服务网站),或者在局域网搭建版本库gitlab,一方面提高代码安全性,当本地电脑出现故障,电脑上的代码不会丢失,另一方面,实现多人协作开发。我的教程是在github上建立远程版本库。
1.注册一个github帐号,此处省略。。只要按官网流程注册就好。
2.点击右上角"+"new repository,新建仓库,输入仓库名,create repository。这样一个远程版本库就建好了。
连接远程版本库并且正常工作
上一部分已经知道了如何建立本地版本库和远程版本库,如何把本地与远程连接并且正常工作,我分为三种情况(总的来说本地版本库与远程版本库保持一致或者本地版本库的时间轴包含远程时间轴):
1.有本地版本库,没有远程版本库
在github上新建远程版本库且是空的,分支也没有(新建远程版本库时有一个选项是新建README.md,不要选择),在Gti bash中使用如下命令把本地与远程建立连接,并把本地版本库推送到远程保持一致:
//origin是给远程版本库的别名,区分本地版本库,可以不同
//url可以是http或者git,配置了ssh key用git协议,否则http协议
$git remote add origin url
$git pull origin master(主分支)
2.没有本地版本库,有远程版本库
在Gti bash中使用如下命令把远程版本库克隆到本地保持一致,本地自动与远程建立连接:
//origin和url同上
$git clone origin url
3.有本地版本库,有远程版本库
在Gti bash中使用如下命令把本地与远程建立连接:
//origin和url同上
$git remote add origin url
本地与远程建立连接,还需执行下面命令把远程与本地版本库merge,也就是把远程版本库合并到本地,保持本地时间轴包含远程时间轴:
$git pull origin master(主分支)
分支的merge开发
使用Git开发项目的过程是这样的,每天把远程的master分支pull到本地的master,基于本地的master创建本地分支developer(开发者名字),开发完成push本地developer到远程的developer分支,提交mr(merge request),审核通过把远程的developer分支merge到远程master分支。
Git开发过程.png
在本地developer分支上开发时,可能需要修改bug或者添加新功能操作,还可以基于该分支创建其他分支如bug,那么开发过程就是如下这样的。
Git开发过程.png
上图关于版本库之间的合并有三个命令
pull:拉取远程版本库与本地版本库相同分支合并
push:推送本地版本库到远程与远程版本库相同分支合并,若远程没有该分支自动创建
merge:本地版本库其他分支合并到当前分支
pull和push可以理解为远程与本地分支的merge,不同用户同一分支用pull和push,同一用户不同分支用merge。
merge(以下包括pull、push)操作合并的是版本库,按所有版本库commit提交时间合并。
若版本库相同,不用merge,
若版本库不同且不冲突,直接merge,
若版本库不同且冲突(修改同一文件是冲突),merge之后进入merge冲突状态,需要修改冲突文件,add到暂存区,commit到版本库。
注意:创建分支和merge要保证工作区干净,如果工作区不干净,可使用stash清理工作区,创建分支和merge之后stash pop恢复工作区。
Git中常用命令列表
git clone REMOTE_NAME URL //克隆远程版本库到本地并自动连接
git init //建立本地版本库
git status //查看当前工作区状态
git add FILE.. //添加文件到暂存区
git commit -m "" //提交暂存区的文件并加备注
git remote //查看远程版本库别名
git remote -v //查看远程版本库链接
git remote add REMOTE_NAME URL //添加远程版本库连接
git remote remove REMOTE_NAME //删除该别名的远程版本库
git branch BRANCH_NAME //创建分支
git branch -d BRANCH_NAME //删除分支
git checkout BRANCH_NAME //切换分支
git checkout -b BRANCH_NAME //创建并切换该分支
git pull REMOTE_NAME BRANCH_NAME //拉取远程分支合并到本地同一分支
git push REMOTE_NAME BRANCH_NAME //推送本地分支合并到远程同一分支
git merge BRANCH_NAME //合并该分支到当前分支
git stash //隐藏工作空间
git stash list //查看隐藏的工作空间
git stash pop //恢复隐藏的工作空间
git checkout -- FILE //清除暂存区
git diff FILE //工作区与暂存区文件比较
git diff --cached FILE //暂存区与分支文件比较
git diff head FILE //工作区与分支文件比较
git reset --hard head //重置为当前分支状态
git reset --hard head^ //重置为上一个快照状态
git reset --hard VERSION_NUM //重置为对应的版本号快照
git log --pretty=oneline //查看单行日志
在IDEA中使用Git
配置Git1.在创建项目界面,先配置 Configure-->settings-->VersionControl-->Git,设置Path to Git executable为本地Git.exe所在路径,点击右侧Test,显示Git executed successfully配置成功,点击右下角ok。
2.点击Check out from Version Control-->Git从Git版本库中检出项目,输入Git远程仓库URL(可以是http也可以是Git协议,Git协议需要配置添加ssh key),点击Test,Connection successfully之后,点击右下角clone,就是git clone origin URL命令,克隆远程版本库到本地并打开。
克隆远程版本库3.下面是Git命令在IDEA中对应的图形界面
菜单栏VCS-->Git-->下对应着Git的常用命令,也可以右击项目名-->Git-->,如下图
Git常用命令
分支相关命令 右下角Git:当前分支-->选择分支-->分支相关命令,如下图
Git分支
分支相关命令
网友评论