一、版本控制器的方式
1.集中式版本控制工具
版本库集中存放在中央服务器,团队中的每个人工作时从中央服务器下载代码,必须联网才能工作,每个人修改完后再提交到中央服务器的版本库。如SVN(如图)和CVS。
2.分布式版本控制工具
分布式版本控制系统没有中央服务器,每个人的电脑上都是一个完整的版本库,工作时无需联网。如Git。
二、Git操作流程图
三、Git基础操作指令
1. Git工作目录下文件的几个状态
Git工作目录(git本地仓库所在目录)下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行git的命令而变化。
2.常用命令
命令 | 说明 |
git status | 查看文件修改状态 |
git add 单个文件名或通配符 |
①将工作区的一个或多个文件的修改到暂存区:git add FileName
②将工作区的所有文件的修改到暂存区:git add .
|
git commit -m '注释内容' |
将暂存区的内容提交到本地仓库的分支 |
git log [option] |
查看提交日志
[option]:
|
【tips】已将git log [option]所有指令用别名git-log代替。 |
|
git reset --hard commitID |
切换内容的版本 |
git reflog | 查看已删除的提交记录 |
3.添加文件至忽略列表
有些文件(如自动生成的日志文件、编译过程中创建的临时文件等)不需要使用git管理,也不希望它们总出现在未跟踪文件列表,这时可以在工作目录中创建一个名为.gitignore的文件,列出需要忽略的文件。
四、git分支
使用分支可以把工作从开发主线上分离开来,以免影响开发主线。
1.常用的分支命令
(1)查看分支
git branch
【tips】Git 的默认分支名字是 master。
(2)创建一个新分支
git branch b1
(3)分支切换
git checkout b1
git checkout -b b1 //可以切换到一个不存在的分支,即创建分支并切换
(4)合并分支:
将b1分支合并到master上:
git merge b1【tips】①一般是将其他分支合并到master上。
②想将b1分支合并到b2分支上,需要先切换到b2分支上执行git merge b1。
(5)删除分支
git branch -d b1 //删除分支时需要做各种检查
git branch -D b1 //不做任何检查,强制删除
【注意】不能删除当前分支,删除前应先切换到其他分支。
(6)解决冲突
不同分支上对文件的修改可能会存在冲突,如两个分支同时修改了同一文件的同一行内容,这时就需要手动解决冲突:
1)手动修改文件中产生冲突的位置上的内容;
2)将修改后的文件重新加入暂存区;
3)提交文件到工作区。
2.分支原则与流程
在开发中,一般有如下分支使用原则与流程:
(1)master(生产)分支
(2)develop(开发)分支
(3)feature/xxx分支
(4)hotfix/xxx分支
五、Git远程仓库
Git中存在两种类型的仓库——本地仓库和远程仓库,可以借助一些代码托管服务来搭建远程仓库,如GitHub、码云、GitLab等。
1.常用的远程仓库
(1)GitHub
是一个面向开源及私有软件项目的托管平台。
(2)码云
国内的一个代码托管平台,因此速度更快些。
(3)GitLab
是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具。
2.码云的使用
(1)创建远程仓库
(2)SSH公钥
1)生成SSH公钥:
ssh-keygen -t rsa【tips】如果公钥已存在,则会自动覆盖。
2)获取公钥:
cat ~/.ssh/id_rsa.pub3)Gitee设置账户公钥
设置→SSH公钥→添加公钥
4)验证是否配置成功
ssh -T git@gitee.com
(3)在本地仓库配置远程仓库
1)添加远程仓库git remote add origin 仓库地址【tips】origin是自己起的远程仓库的名字,一般一个本地仓库对应一个远程仓库,都起名叫origin。
2)查看远程仓库
git remote3)将本地内容推送(push)到远程仓库
git push [-f] [--set-upstream] 远程仓库名 本地分支名:远程分支名
- 本地分支名和远程分支名相同,可省略":远程分支名",只写本地分支名,即:
git push origin master
- --set-upstream:推送到远程仓库的同时建立和远程分支的关联关系。
- 若当前分支已和远程分支关联,可省略远程仓库名和本地分支名,
git push
【tips】查看关联关系命令:

git branch -vv
- -f:强制推送
(4)从远程仓库克隆(clone)到本地
git clone 仓库地址 自定义仓库名
(5)从远程仓库抓取(fetch)和拉取(pull)
远程分支和本地分支一样,都可以进行合并(merge)操作,merge前需要先把远程分支下载到本地仓库——抓取和拉取。
1)抓取(fetch):将远程分支的修改操作下载(抓取)到本地仓库,但不会merge。
git fetch [remoteName] [remoteBranchName]【注意】如果不指定远程仓库名和远程分支名,则会抓取所有远程分支。
2)拉取(pull):将远程分支的修改操作下载到本地仓库并自动merge到当前分支,等同于fetch+merge。
git pull [remoteName] [remoteBranchName]【注意】如果不指定远程仓库名和远程分支名,则会拉取所有远程分支。
(6)解决merge冲突问题
A在本地修改代码后先push到远程仓库,而B在本地修改代码,也需要push到远程仓库,但因为B在A之后修改所以B需要先从远程仓库拉取提交,经merge后才能push到远程仓库。但B在拉取提交时,由于A和B修改了同一文件相同位置的代码,这时merge会产生冲突。
手动解决冲突:
1)手动修改文件中产生冲突的位置上的内容;
2)将修改后的文件重新加入暂存区;
3)提交文件到工作区;
4)进行push操作。
六、在IDEA中使用Git
1.在IDEA中配置Git
setting→搜索git→选择Git安装目录并Test→显示Git版本则配置成功
2.使用Git
(1)创建项目远程仓库;
(2)初始化本地仓库(放在IDEA项目目录里):
1)先将.gitignore文件放到项目目录下:
2)VCS→创建Git仓库→选择项目目录→IDEA界面右上角出现如图所示时,初始化本地仓库成功:
(3)提交(commit)项目文件到本地仓库:
(4)如何查看提交记录(=git-log)?
(5)将本地修改推送(push)到远程仓库
【tips】创建好远程仓库后,以后commit可以直接顺带push:
(6)克隆仓库
复制被克隆仓库的SSH→IDEA中Git的clone→填好SSH和克隆位置→clone
(7)解决冲突问题
出现冲突→手动更改代码→将报红文件add(变蓝)→提交推送
(8)分支操作
1)创建分支:
2)切换、合并分支:
【注意】切换分支前必须先提交本地修改,防止代码丢失!