主流的版本控制器
- Git(代替BitKeeper)
- SVN (Subversion)
- CVS(Concurrent Versions System)
- VSS (Micorosoft Visual SourceSafe)
- TFS (Team Foundation Server)
- ...
版本控制分类
本地版本控制
集中式版本控制
所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。代表产品:SVN、CVS、VSS
分布式版本控制
每个人都拥有全部代码!这样会存在安全隐患!
所有版本信息仓库全部同步到本地的毎个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。
不会因为服务器损坏或者网络问题,造成不能工作的情况
GIT和SVN的区别
- GIT是分布式版本控制系统,SVN是集中式版本控制系统
- GIT不要中央服务器且不需要联网,SVN需要中央服务器且必须联网
GIT下载及安装
- 正常渠道:git-scm.com
- 镜像渠道:registry.npmmirror.com/binary.html…
- 配置环境变量:只是为了在任意地方使用git,配不配都可以,安装的时候可以选择自动配置
GIT配置命令
- git config -l 配置
- git config --system --list 系统配置
- git config --global --list 当前用户配置
- git config --global user.name "xxxx" 配置用户名(必须配置)
- git config --global user.email "xxxxxx" 配置邮箱(必须配置)
GIT基本理论(重点!核心!)
- Git分为三个区域(算上远程仓库就有4个)
- 工作区 Workspace
- 暂存区 Stage
- 本地仓库 Repository
- 远程仓库 Remote Repository (例如GitHub Gitee)
- 原理图解
GIT项目搭建
1.创建Git仓库
- git init 创建本地仓库,生成.git,包含版本信息等等
- git clone "url",下载远程仓库的资源
2.Git忽略文件
Gitee仓库创建+克隆指南
- 创建仓库,语言选java、添加java .gitignore、证书可以选GPL3.0
- 克隆仓库主要分为两种HTTPS、SSH
- HTTPS
- 复制HTTPS项目链接
git clone HTTPS项目链接- 输入
gitee的账号/密码,完成克隆 - 输入一次密码后,git push/pull远程仓库可能会免密,这是因为gitee账号/密码被记录到了用户本机的钥匙串中,删掉钥匙就无法做到免密了
- 因此不推荐这种方式,很不安全
- SSH
- 检查本机是否有创建公钥/私钥:
ls -al ~/.ssh - 若没有创建则使用命令生成
ssh-keygen -t rsa -C "自己的邮箱" - 查看公钥
cat /Users/当前用户名/.ssh/id_rsa.pub - 复制公钥,到Gitee上录入SSH公钥,后续使用git push/pull远程仓库Gitee就可以免密
- 使用
ssh -T git@gitee.com,检查SSH公钥是否录入成功 - 复制SSH项目链接
git clone SSH项目链接,完成克隆- 推荐使用
- 检查本机是否有创建公钥/私钥:
GitHub仓库创建+克隆指南
- 创建仓库
- 通过SSH克隆(同gitee)
Git命令
- git clone "URL" // 从远程仓库克隆项目
- git branch // 查看分支
- git branch 新分支名 // 创建分支
- git checkout -b 新分支名 // 创建并切换到新分支
- git checkout 分支名 // 切换分支
- git branch -d 分支名 // 删除分支
- git branch -D 分支名 // 强制删除分支
- git branch -d -r 分支名 // 删除远程分支
- git add 文件 // 文件从untracked(未跟踪)添加到暂存区
- git commit -m "提交内容" // 文件从暂存区提交到本地仓库
- git push origin 当前分支 // 文件从本地仓库推送到远程仓库
- git pull origin 分支名 // 获取分支/远程分支
- git reset HEAD^ // 回退到commit上一个版本
- git reset HEAD 指定版本号 // 回退到commit的某一个版本
- git reset 文件 // 文件从暂存区移动到工作区
- git checkout 文件 // 在工作区中,文件从修改状态回滚到修改前的状态
- git fetch 分支名 // 拉取远程仓库的代码,但不会做合并,pull会自动合并,fetch需要单独做merge操作
- git merge // 合并文件
- git remote -v // 查看当前项目的远程仓库地址
- git remote set-url origin "url" // 替换远程仓库的地址
- git branch -r // 查看远程分支
- git branch -dr 远程分支名 // 删除远程分支
- git rebase
- git rebase -i HEAD~数字
- git rebase -i 哈希码
- git cherry-pick
- git branch -f 分支名
- git stash
- git stash list
- git stash show stash@{no}
- git stash pop
- git stash apply stash@{no}
- git stash drop stash@{no}
- git stash clear
- git stash --help
给已有的项目加上Git
- 方法1
- 到项目目录下执行
git init - 依次执行
git add 需要的文件、git commit -m "提交内容描述"到本地仓库 - 执行
git remote add origin "远程仓库地址" - 执行
git pull origin master,一般来说默认分支是master,可以在gitee上设置 - 如果pull时遇到仓库编号不一致的错误,可以执行
git pull origin master --allow-unrelated-histories - 最后执行
git push origin master,把项目推送至到远程仓库
- 方法2
- 把方法1的第一个步骤改为,复制一个其他项目的git基础文件即可
idea创建springboot项目
- 打开克隆下来的仓库
- 创建新模块[new Module]
3.选择依赖