扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
一、使用Git拉取项目到本地
创新互联是一家专注于网站设计制作、网站设计与策划设计,利川网站建设哪家好?创新互联做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:利川等地区。利川做网站价格咨询:18982081108
1、团队实际开发Git概况
在实际开发的项目中,一个项目会有 三种版本分支:master版本分支、dev版本分支、自定义版本分支
master版本分支: 正式运行环境中的程序代码,运行环境会定期自动或按计划手动从该master版本分支中获取代码并重新编译和运行,不允许随意修改,一旦出错将对系统造成严重后果。所以开发人员不会被项目管理员授予:在Master上创建分支、直接提交代码到Master分支上、使用Master分支合并其他分支的权限。
dev版本分支: 测试环境中运行的代码,master版本分支会定期合并该dev版本版本分支的代码,也不允许随意修改,如果想要修改,必须先新建一个自定义版本分支,编写好代码之后同步到云端仓库,在云端使用Git向该项目的管理员发出合并请求(merge),项目管理员同意之后才能在dev分支中看到自己写好的代码。所以开发人员也不会被授予:直接提交代码到dev分支、使用dev合并其他分支的权限;但是拥有在dev分支上新建自定义分支的权限。
自定义版本分支: 自己定义的版本分支,有两种情况。
情况1: 一般情况下,开发人员使用git clone命令、使用IDEA或GitHub Desktop等其他图形化工具从云端复制项目到本地的是当前时间的master版本,开发人员需要在本地新建一个分支(可以命名为dev)关联到云端的dev分支,再在本地dev分支上新建一个自定义版本分支。
情况2: 还有一种情况是先在云端的dev上新建一个自己的分支,再使用命令行自定义拉取信息,拉取刚才新建的分支到本地。
当开发人员在自定义分支上开发完了自己的代码之后,将当前自定义版本分支同步到云端,这时候请求合并到dev分支,管理员或者被授权合并权限的人员就可以审核开发人员的代码并进行合并了,如果测试不通过则不予合并,如果在合并之后出现问题,则将dev分支回退到之前的版本。
2、Git拉取项目:就是复制项目到本地。
本文介绍使用IDEA从云端拉取项目,默认拉取的是master分支的快照,相当于在本地新建一个master分支,再把当前master分支的代码复制到本地master分支。
(1)新建项目,从版本控制系统拉取。
(2)从云端查看要被拉去的项目路径,在IDEA中输入项目路径
在这里复制
在这里输入
然后确认即可
3、用IDEA打开或者导入刚才的项目,项目为git-test
打开或者导入都可以,以下是打开
信任项目选择信任
此时项目就已经下载到本地并且作为一个项目文件存在了,但是还是不能直接运行,因为大型项目往往需要配置运行环境。
二、本地运行
克隆好的SpringBoot项目用IDEA打开自动会根据maven加载项目依赖,并配置启动类。
IDEA右上角菜单栏出现下图所示的情况表示加载成功。
由于项目是团队开发,所以项目的src\main\resource目录下会有对应多个状态的properties配置文件,如下图:
application.properties、application-dev.properties、application-prod.properties分别对应总体配置、测试开发环境配置、运行环境配置。需要这些配置的原因是:测试环境(dev)和生产环境(prod)的数据库或者资源不一致,测试环境的数据库是生产环境的一个副本,生产环境数据库只允许增加和查看,修改和删除需要严格控制。
由于我们当前是在开发环境之下,所以需要加载使用dev环境的配置。但是加载和使用dev环境的配置不能在代码中设置,如果上线到运行环境运行到这部分代码就会出错,所以需要在运行时设置VM Options参数:-Dspring.profiles.active = dev,如下图:
三、本地测试
正常情况下本地测试:
在Test同路径下面创建测试类,并在类上添加注解@SpringBootTest;创建方法,并添加注解@Test
代码如下:
@SpringBootTest
public class SpringBootFunctionTests {
@Autowired
UserService userService;
@Test
public void testMethod1() {
//方法体
}
}
登录后复制
但是在某些情况下可能会报错,尤其是在某个地方使用了@WebEnvironmentAutoConfig注解之后,可能需要重新指定测试类的运行环境。
此时需要
(1)先检查pom.xml,看是否配置了spring-boot-starter-test
(2)查看import,分别尝试import org.junit.Test;和import org.junit.jupiter.api.Test;
(3)尝试修改注解,如:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {OperationApplication.class})
@SpringBootTest
public class SpringBootFunctionTests {
@Autowired
UserService userService;
@Test
public void testMethod1() {
//方法体
}
}
登录后复制

(4)如果此时还是出错,并且是在未添加@RunWith(SpringRunner.class)注解出现NullPointer错误,添加了次注解出现上下文环境无法加载错误(ApplicationContext not found),说明没有指定测试类的运行环境配置,就像上文指定开发运行环境配置一样。
指定测试类的运行环境配置
方法有三种:
(1)一种是给Junit添加VM Options:-Dspring.profiles.active = dev
添加Junit在此项目中的总体运行配置,此时在每一次运行Junit测试的时候,IDEA都会加上此运行配置,一劳永逸。
(2)单个测试方法添加运行配置
此时需要对每个测试方法都添加配置,比较麻烦。
(3)在每个测试类上添加@ActiveProfiles(“dev”)指定运行环境,并添加@RunWith(SpringRunner.class)
代码如下:
@RunWith(SpringRunner.class)
@ActiveProfiles("dev")
@SpringBootTest
public class SpringBootFunctionTests {
@Autowired
UserService userService;
@Test
public void testMethod1() {
//方法体
}
}
登录后复制
也需要对每个测试类都添加这两个注解。
拉取远程仓库:$ git pull [remoteName] [localBranchName]
git pull:从其他的版本库(既可以是远程的也可以是本地的)将代码更新到本地,例如:'git pull origin master'就是将origin这个版本库的代码更新到本地的master主枝,该功能类似于SVN的update
git拉取代码到本地的方法是:
打开git命令窗口,输入命令【git clone github仓库地址】,然后回车即可拉取代码到本地仓库。
在实际项目开发过程中,往往是已经存在远程项目了,我们定义的需求是只需要简单的操作git,能够上传和下拉最新代码。
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper。
Git的功能特性:
从一般开发者的角度来看,git有以下功能:
1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
2、在自己的机器上根据不同的开发目的,创建分支,修改代码。
3、在单机上自己创建的分支上提交代码。
4、在单机上合并分支。
5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
6、生成补丁(patch),把补丁发送给主开发者。
7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:
1、查看邮件或者通过其它方式查看一般开发者的提交状态。
2、打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。
3、向公共服务器提交结果,然后通知所有开发人员。
把nginx和php作为两个容器,代码另外放在volume,分别供php和nginx两者挂载
好处:代码更新灵活
坏处:感觉这作为一个服务来说很“山寨”(可以和Java/NodeJS的服务类比一下);另外,如果你用到了composer,依赖部分无法在制作镜像中过程中自动化安装
把nginx作为一个容器,php和代码放在另一个容器,但其中代码目录也需要供nginx挂载
好处:相比1,可以把composer放入PHP容器中,制作镜像时帮你安装依赖
坏处:作为服务依然很“山寨”
把nginx、php和代码全放入同一个容器
好处:更符合微服务的定义,整体对外构成一个服务;nginx和php之间可以直接用unix socket通信
坏处:除了灵活性之外,不太符合Docker官方一个容器只跑一个服务的建议
1.在本地新建一个文件夹,用来存放要拉的代码,
2.从git复制代码的git地址
3.在git bash here中,进到步骤1所建的文件目录下
4.然后执行pull代码的命令,git clone -b master git@git.xxx.com:xxx/cloud_test.git 即可(-b后面是分支名,分支名后面是git地址)
拉取远程仓库:$ git pull [remoteName] [localBranchName]
git pull:从其他的版本库(既可以是远程的也可以是本地的)将代码更新到本地,例如:'git pull origin master'就是将origin这个版本库的代码更新到本地的master主枝,该功能类似于SVN的update
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流