一、前言
1、何为版本控制?
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
Git是目前最先进的分布式版本控制系统。
maven:jar包管理工具
版本管理工具:Git、Svn
2、Git & SVN对比
SVN版本集中管理,所有的代码都在一台服务器上;集中式,所有个体必须连接到中央仓库才能操作
Git去中心化,每个服务器都有一个完整的代码库;分布式,将仓库clone到本地,可以本地自己玩,最后推送到中央仓库
3、GitHub/GitLab对比及区别
GitHub
全球最大的面向开源及私有软件项目的托管平台,免费注册并且可以免费托管开源代码。
GitLab
与GitHub类似,也是属于第三方基于Git开发的产品,不同的是:GitLab可以部署在自己的服务器上,代码
数据都是掌握在自己手中,适合公司内部团队开发。
二、Git安装与配置
1、安装Git
- for Linux ——yum install -y git
- for Windows ——https://git-scm.com/downloads
- for Mac ——brew install git
2、配置
1. 注册Git账号 https://github.com
2. 配置sshkey
3. 测试ssh链接GitHub
4. 配置邮箱和用户名
5. 检查设置是否正确
三、Git使用
1、常用命令
克隆 :git clone 远程仓库地址
查看未被追踪的文件(相当于查看暂存区的文件) :git status
追踪文件 :git add 某个文件 或者 . 点表示未追踪的所有文件
提交文件 :git commit -m “注释”
推送到远程 :git push
删除 :git rm 文件
查看本地所有分支 :git branch
查看所有的本地及远程分支 :git branch -a
创建分支 :git checkout -b 分支名
将分支推送到远程(第一次) :git push --set-upstream origin 分支名
切换分支 :git checkout 分支名
合并分支 :git merge 分支名
删除本地分支 :git branch -d 本地分支名
删除远程分支 :git push origin --delete 分支名
拉取远程分支 :git fetch origin 分支名
查看所有操作的版本号 :git reflog
版本回退操作:
git reset --hard 版本号 回退到指定版本
git reset --hard HEAD^ 回退到上一个版本
2、Git与IDEA集成使用
- IDEA关联Git客户端
- IDEA中克隆仓库
- IDEA提交代码
情况一、 已经存在git仓库,拉取到本地去使用
File->New->Project from version control->填入git仓库的地址
情况二、 让已经存在的项目提交到远程Git服务器
(本地已存在代码,想要推送到Git仓库里面,但是Git服务器没有这个仓库)
方式1 命令操作
前提:在远程Git服务器存在对应的仓库git@github.com:XXX.git——手动创建
1、本地项目和远程的git仓库绑定
git remote add origin git@github.com:XXX.git
2、追踪本地所有的代码 —— git add *
3、提交 —— git commit -m "XXXX"
4、推送 —— git push -u origin master
方式2 idea手动操作——没有创建远程仓库,直接上传项目时候设置
1、Git/Gitee - share project on GitHub/Gitee——这一句相当于【创建远程仓库】 + 【本地项目和远程仓库绑定】的命令
2、填写仓库名 远程分支
3、添加上传内容 填写commit
4、成功提示
3、常见问题
如果出现错误: Failed to create Gitee Repository: remote origin already exists.错误(翻译:远程来源已经存在。)
解决方法如下:
1、查看本地库是否关联了origin的远程库 git remote -v
图中可以看到,本地库已经关联了origin的远程库,并且,该远程库指向Gitee。
2、删除关联的origin的远程库 git remote rm origin
3、再次输入关联远程库命令 git remote add origin git@github.com:(github名)/(git项目名).git
4、分支合并发布流程
git add . # 将所有新增、修改或删除的文件添加到暂存区
git commit -m "版本发布" # 将暂存区的文件发版
git status # 查看是否还有文件没有发布上去
git checkout test # 切换到要合并的分支
git pull # 在test 分支上拉取最新代码,避免冲突
git merge dev # 在test 分支上合并 dev 分支上的代码
git push # 上传test分支代码
便于理解记忆,大致流程图