管理项目版本的问题.
1. 人工方式.
采用创建多个文件夹的方式来管理不用的版本.
问题: 随着版本的迭代,功能的更新,版本会越来越多.文件夹越来越多,管理起来很麻烦.
无法细粒度的管理版本. 玩单机,不能多人协同操作.
2. 第三方工具管理本地的文件夹.
采用工具管理文件夹,避免文件夹过多,导致文件夹管理问题.
问题: 玩单机,不能多人协同操作. 无法细粒度的管理版本.
3. 集中式管理方案.
CVS&SVN方式,提供一个第三方的服务器,统一将版本控制在第三方的服务器.不是玩单机了,可以多人协同工作. 可以细粒度的控制版本.
问题: 单点故障,速度较慢.
4. 分布式管理方案.
Git分布式版本控制工具. Git即提供了本地仓库,也提供了远程仓库.
速度是特别快的,采用元数据的保存方式,快照形式提升速度.
Git是由Linux操作系统的发布者Linus研发的.
当时Linus为了快速的发展Linux操作系统,完全对外开源的.
因为Linux完全对外开源,Linux的社区是非常火爆.
Linux社区的大神,对Linus提供一些问题和响应的解决方案.
Linux从1991对外开源了,一直手动管理,Linux1.0 -> Linux1.0.1 -> Linux1.0.2
Linux社区的大神对更新速度不太满意,Linus并没有选择CVS|SVN,嫌弃这几款版本控制工具的太慢,当时还有一些商业的版本控制工具,商业的违背了开源的理念.
在2002年:
BitMover的公司将商业的版本控制工具BitKeeper,免费的提供给Linux社区人员使用.
有一些Linux社区的大神破解BitKeeper协议,BitMover公司监控到了被破解,不再免费的提供给你Linux使用了.
Linus花费了2个月的时间,编写了版本控制工具Git.随着Github仓库的推出.Git越来越火爆.
最后BitKeeper也对外开源了.
1. 官网.
https://git-scm.com/
2. 下载最新的Git即可.
2.21.0版本.
3. 傻瓜式安装.各种下一步.(指定一下安装目录,不要带中文和空格)
....
4. 安装成功.任意位置右键.Git bash here
输入
git --version
弹出版本号.
1. Git是分布式的版本控制工具,SVN是集中式的版本控制工具.
2. SVN的性能比Git慢.
3. Git有本地仓库,不会出现单点故障. SVN没有本地仓库,会出现单点故障.
4. Git对外有公共的Github,Gitee远程仓库. SVN虽然也有,但是使用量极少.
1. 查看个人信息.
git config --global -l
2. 设置个人用户名.
git config --global user.name "个人姓名"
3. 设置个人邮箱.
git config --global user.email "个人邮箱"
1. 初始化git仓库.
git init
2. 将工作区的内容add到暂存区.
git add . | 文件名 | 目录名
3. 将暂存区的内容提交到本地分支.
git commit -m "提交信息"
4. 查看日志.
git log
1. 用工作区内容和本地仓库做比较,以及暂存区和分支做比较.
git status
2. 比较工作区内容和暂存区的内容,并展示详细信息.
git diff
3. 退回到某一个提交点. (小心)
git checkout 提交点的唯一标识
4. 查看全部日志.
git reflog
5. 删除文件. 删除工作区 + 暂存区 + 分支上的文件.
git rm 文件名
Git默认有一个master分支.
分支特点:
1. 分支默认只向最后一个提交点.
2. 获取的信息就是分支指向的信息.
3. 采用各种方式更改分支指向提交点.
组内有5个成员.
5个人协同开发. -> 同时向远程仓库的master分支推送代码.
导致master分支很乱.
针对成员/功能模块创建不同的分支.
针对5位成员提供5个分支.让每位成员在自己的分支上玩.
当5为成员完成全部的功能模块后,由组长将5个分支合并到一起.
解决冲突.
由组长将全部的配置和公共内容准备好,自己先创建本地仓库,推送到远程仓库.
由组员clone下来,进行自己功能的编写.
# 1. 初始化git仓库.
git init
# 2. 创建一个.java文件.
复制了一个java文件
# 3. 将.java添加并提交到本地仓库的master分支上.
git add .
git commit -m "信息"
# 4. 创建一个全新的分支test.
git branch test
# 5. 切换到test分支上.
git checkout test
# 6. 在test分支中修改.java文件.
# 修改文件内容
git add .
git commit -m "信息"
# 7. 切换回master分支,并合并test分支中的内容.
git checkout master
git merge test
# 8. 删除test分支.
git branch -vv
git branch -d test
# 1. 在当前master分支上创建一个新的分支.
git branch test
# 2. 在master分支上修改UserController.
....
# 3. 切换到test分支,也修改UserController.
git checkout test
....
# 4. 切换回master分支,并合并test分支.
git checkout master
git merge test
# 5. 看到冲突,以及处理方案.(MASTER|MERGING)
1. 根据具体情况,留下那些内容,并重新add + commit.
删掉>>>>>>>>>>>======<<<<<<<<<<<<<<
git add .
git commit -m "...."
2. 冲突太多,取消合并.
git merge --abort
1. 公司内部会提供一个Gitlab作为远程仓库.
2. 外网提供的Github,大量的开源代码都在Github上,GitHub速度相对较慢,都英语,看不懂.
3. 国内提供了类似Github的平台,Gitee码云,在国内速度比较快,都是中文,Gitee的页面和Github的页面基本是一致的.
1. 登录gitee账号(没有去注册).
2. 生成ssh的公钥和私钥
ssh-keygen -t rsa -C "[email protected]"
3. 将生成的公钥交给gitee.
右上角 -> 设置 -> ssh公钥 -> 添加公钥.
将id_rsa.pub内容赋值到公钥里.
#1. 在gitee上创建一个远程仓库.
创建裸库. 不能勾选README.md文件.
#2. 将本地仓库关联上远程仓库.
git remote add origin 仓库的SSH地址.
#3. 将本地仓库的内容推送到远程仓库.
git push -u origin master
#4. 在gitee平台,修改UserController.java
在页面修改即可.
#5. 在本地仓库将远程仓库中最新的版本拉取下来.
git pull origin master
# 1. 在远程仓库修改内容.
...
# 2. 在本地仓库修改内容.
...
add + commit
# 3. 本地仓库push失败.
git push -u origin master -> 失败
# 4. 本地仓库pull远程仓库.
git pull origin master
# 5. 打开UserController文件,查看到冲突,手动解决.
...
# 6. 重新add + commit + push推送即可.
add + commit + push
file -> settings -> git -> 指定git executable 文件. -> Test
file -> settings -> plugins -> .ignore -> enter -> install下载.ignore
现在的maven项目只需要提交src和pom.xml文件,需要忽略其他内容.
在.gitignore的文件中添加需要忽略的内容.
1. 将项目关联上git.
VCS -> import Version Control -> Create Git Repository -> 选择目录 -> 默认使用当前项目目录
2. 具体操作.
添加到暂存区: 右键项目 -> Git -> Add
提交到本地分支: 右键项目 -> Git -> commit dirctory
推送到远程仓库: 右键项目 -> Git -> Repository -> push
拉取远程仓库: 右键项目 -> Git -> Repository -> pull
-> Create Git Repository -> 选择目录 -> 默认使用当前项目目录