版本控制工具
版本控制工具
- 分布式版本控制工具:
Git
- 集中式版本控制工具:
SVN
分布式版本控制工具的优点:
- 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
- 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)
Git
工作机制
代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。
- 局域网:
GitLab
- 互联网:
- 国外:
GitHub
- 国内:
Gitee
码云
- 国外:
Git命令
查看版本
# 查看 git 版本
$ git --version
设置签名
# 设置用户签名为xuhx
$ git config --global user.name xuhx
# 设置用户邮箱为xxx@qq.com
$ git config --global user.email xxx@qq.com
注意: 用户签名和用户邮箱只需设置一次即可。如果不设置,则无法提交代码。这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系。
初始化本地库
前往自己项目的根目录下,右键,打开Git Bash
命令窗口
#1. 初始化本地库
$ git init
#2. 查看当前项目的提交情况(红色标注的文件是未提交的文件、绿色标注的文件是已经提交到暂存区的文件)
$ git status
#3. 提交文件mvnw到暂存区
$ git add mvnw
#4. 删除暂存区中的mvn文件
$ git rm --cached mvnw
#5. 提交本地库git commit -m "日志名称" 暂存区的文件
$ git commit -m "first commit" mvnw
#6. 查看提交版本信息
# 精简版本信息查看(HEAD -> master指向的版本为当前最新版本)
$ git reflog
# 详细版本信息查看
$ git log
#7. 版本穿梭
$ git reset --hard 6521fc5
分支
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。默认git
会给我们创建一个主分支master
。
分支的好处: 同时并行推进多个功能开发,提高开发效率。各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
# 查看分支(*代表当前所在的分区)
$ git branch -v
# 创建一个分支,分支名叫hot-fix
$ git branch hot-fix
# 切换当前分支为hot-fix
$ git checkout hot-fix
# 合并分支(合并分支是指将指定分支合并到当前分支)
$ git merge hot-fix
合并分支代码冲突问题:
-
A
分支是基于master
分支的基础之上做的修改,且master
没有做修改,将A
分支合并到master
分支上,不会产生代码冲突。 -
A
分支的代码文件与master
分支的代码文件没有交集,不会产生代码冲突
GitHub
-
登录
GitHub
官网https://github.com/ -
创建公有远程仓库,得到仓库
https
地址 -
本地命令操作
#1. 给gitHub远程仓库起别名 $ git remote add gitHub_demo https://github.com/xuhx-157/gitHub-demo.git #2. 查看当前所有远程地址别名 $ git remote -v #3. 推送本地库的分支master到远程库gitHub(注意:这个推送需要登录过gitHub的浏览器认证授权,因为gitHub是国外的,所以会有大概率的失败,重试即可) $ git push gitHub_demo master #4. 拉取远程库gitHub的分支master到本地更新代码 $ git pull gitHub_demo master #5. 克隆远程库gitHub的分支master到本地(克隆实现了三步:拉取代码、初始化本地库、创建远程库别名),注意:克隆公有远程仓库不需要登录gitHub $ git clone https://github.com/xuhx-157/gitHub-demo.git
-
团队内协作:推送本地库分支到远程库,需要你的GitHub账户在这个项目的团队中
邀请别人作为当前远程库的成员 -
ssh
免密登录gitHub
进入当前用户的家目录下进入Git Bash
,输入以下命令:# 三次直接会车,生成公钥和私钥(在当前家目录下回生成一个.ssh的隐藏文件夹,里面有公钥和私有文件,复制公钥文件里面的钥文) $ ssh-keygen -t rsa -C 1572735583@qq.com
来到下图所在地方,将公钥钥文粘贴到这个里面
加完后我们可以使用ssh协议去拉取项目$ git clone git@github.com:xuhx-157/gitHub-demo.git
idea应用
环境配置
- 配置
Git
忽略文件
与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽IDE
工具之
间的差异。
在当前用户目录下创建git.ignore
文件,添加下面的配置# Compiled class file *.class # Log file *.log # BlueJ files *.ctxt # Mobile Tools for Java (J2ME) .mtj.tmp/ # Package Files # *.jar *.war *.nar *.ear *.zip *.tar.gz *.rar # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* .classpath .project .settings target .idea *.iml
- 在
.gitconfig
文件中引用忽略配置文件(注意:这里要使用正斜线(/)
,不要使用反斜线(\)
)[core] excludesfile = excludesfile = C:/Users/15727/git.ignore
- 配置
IDE
的Git
安装位置
初始化本地库
初始化完成后,当前项目所有文件都会变成红色,红色代表未添加到暂存区
加入暂存区
提交本地库
提交记录、版本切换
分支
- 创建分支
- 切换分支
- 合并分支
集成gitHub
- 安装
GitHub
插件IDE
默认集成了GitHub
插件,如果没有可以去plugins
下载 - 使用
tocken
绑定GitHub
账户
个人->settings
->Developer settings
->Person access tockens
,注意生成的tocken
只会出现一次,之后是不会找的到的,将生成的tocken
粘贴到IDE
的GitHub
即可完成绑定 - 将本地库推送到远程库(第一次推送)
VCS
->import into version control
->share project on GitHub
- 拉取远程库代码到本地库
项目右键 ->Git
->repository
->Pull
- 将本地库提交更新远程库代码(注意:先拉取再更新可以避免冲突)
项目右键 ->Git
->repository
->Push
集成Gitee
- 安装
Gitee
插件 - 剩下步骤与
GitHub
差别不大
GitLab
-
下载GitLab安装包,将安装包上传到服务器上(注意服务器内存至少
3G
) - 编写安装脚本,执行安装
sudo rpm -ivh gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm sudo yum install -y curl policycoreutils-python openssh-server cronie sudo lokkit -s http -s ssh sudo yum install -y postfix sudo service postfix start sudo chkconfig postfix on curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash sudo EXTERNAL_URL="http://gitlab.example.com" yum -y install gitlab-ce
- 初始化
GitLab
[root@Centos101 ~]# gitlab-ctl reconfigure
- 启动和关闭
GitLab
[root@Centos101 ~]# gitlab-ctl start [root@Centos101 ~]# gitlab-ctl stop
- 启动完成后浏览器直接访问服务器
ip
即可 - 初始化管理员密码
[root@Centos101 ~]# gitlab-rails console -e production irb(main):001:0> user = User.where(id: 1).first irb(main):003:0> user.password = 'abc123' irb(main):004:0> user.password_confirmation = 'abc123' irb(main):005:0> user.save irb(main):006:0> exit
- 页面注册账号,登陆管理员账号批准该账号
Menu
->Admin
->View latest users
- 也可以设置注册账号不需要管理员批准
Menu
->Admin
->View Setting
->General
-> 取消勾选Require admin approval for new sign-ups When enabled, any user visiting http://gitlab.example.com/users/sign_in and creating an account will have to be explicitly approved by an admin before they can sign in. This setting is effective only if sign-ups are enabled.
-
IDE
安装GitLab
插件,注意:最新版本的GitLab Projects2020
的运行环境是JDK11
,而我们一般使用JDK8
作为开发环境,所以我们需要下载其历史版本。点击下载历史版本