中软国际实训记录(六)
Git以及SpringBoot项目创建
1.Git的使用
- Git是分布式版本控制系统,在我们编写代码的过程中,Git可以发挥很大的作用,我认为学习使用Git最好的就是翻阅Manual,在Manual第一页中:
Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations and full access to internals.
- 上面对于Git的定位就是一个强大的分布式版本控制工具,Git的重点就是在于分布式,意义在于每一个使用Git的人都可以拥有完整仓库的一个副本,并且是相互独立的在自己的副本上面进行修改。我们可以这样想,即使Github消失了,只要每个人都从自己的代码仓库的副本拿出来就能够合并成为第二个GIthub,分布式的优势与特点就在这里。
1.1 Resository仓库
在 git 中项目的基础单位是 Repository,中文为“仓库”
git init .
git clone 链接
1.2 Commit提交
此外 git 要求每次提交必须写 commit message,因此可以用 -m 参数写明 commit message。
在 git 中,只要被提交过的代码就一定可以找回,而且 git 每次只会记录提交之间文件的变化,因此不会占用太多空间。
1.3 pull和push
git是分布式的,为了协调代码需要将本地和远程仓库进行同步
其中把本地仓库的更改同步到远程仓库可以使用:
git push
而反过来从远程仓库拉取更改可以使用:
git pull
其中注意的一点是 git pull 实际上就是 git fectch 后立即 git merge,其中 git fetch 用于拉取更改而git merge 用于合并潜在的冲突。
同时如果远程仓库和本地仓库有冲突,可以用 git push -f
来让远程仓库强行和本地仓库保持同步,但是这是非常不被推荐的,因为其他协作者在 pull 的时候会出现诸如冲突分歧等问题。
1.4 工作流
- 个人认为利用好git的关键就是建立一个良好的工作流,良好的工作流意味着高效的合作
1.4.1 revert和reset
两个都是版本回退指令,但是和git reset 不同的是 git revert 会产生一个新的 commit 表明撤回了哪些 commit,manual上面的解释如下:
git revert is used to record some new commits to reverse the effect of some earlier commits (often only a faulty one). If you want to throw away all uncommitted changes in your working directory, you should see git-reset(1), particularly the --hard option.
1.4.2 branch和checkout
分支
1.4.3 merge和rebase
合并,合并的问题带来了冲突,需要我们注意
1.4.4 fast-forward
pass
1.5 版本库、暂存区、工作区
1.5.1 版本库
- 首先版本库包括暂存区与仓库,是我们本地.git目录本身
1.5.2 暂存区
- 所有被add添加的更改会放到暂存区中,当commit的时候更改就会从暂存区写入到仓库之中
1.5.3 工作区
- 工作区是.git所在目录,不包括.git本身
2.创建一个Spring项目
按照相应的步骤在IDEA中创建即可,这里就列出一个我出现的问题
- 问题出现在mysql-connector-java上
报错如下:
2020-07-27 14:29:52.432 ERROR 14932 --- [ task-1] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization.
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 6 milliseconds ago. The last packet sent successfully to the server was 6 milliseconds ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_152]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_152]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_152]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_152]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) ~[mysql-connector-java-5.1.30.jar:na]
这里的问题就是数据库连接池启动出现问题,我的解决方法如下:
- 修改mysql依赖为8.0版本的
- 在yml中修改为com.mysql.cj.jdbc.Driver
mysql-connector-java 5.0 对应 com.mysql.jdbc.Driver
mysql-connector-java 8.0 对应 com.mysql.cj.jdbc.Driver