以下DEMO可以用于多人共同开发维护一个项目时,使用Git+远程仓库的实践方案
分支管理
dev:开发分支test:测试分支prod:生成分支
个人开发也最起码有一个master+dev,作为主分支和当前开发分支。master永远是稳定版本,dev用于写代码测试都行。确保dev没问题再合并到master
Git工作流
- 开发人员在个人新建的特性分支上工作,完成后将特性分支合并到 dev 分支。
- 定期将
dev分支的代码合并到test分支进行测试。 - 测试通过后,将
test分支的代码合并到prod分支,并部署到生产环境。
- 先拉取远程最新分支到本地
-
Local处New Branch from ‘main’… 从main主分支创建新分支
![[图片]](https://i-blog.csdnimg.cn/direct/8bde4aa7a5e541c19fb9ffdae52e7f06.png)
-
勾选Checkout branch,创建后默认会切换到创建的新test分支
![[图片]](https://i-blog.csdnimg.cn/direct/2593502baff44d66b15a8321297e6fbd.png)
-
输入本地分支名称后可以在Local看到刚创建的分支(本地的项目分支)
![[图片]](https://i-blog.csdnimg.cn/direct/b5da2e57a0374ad3a22f0f96831c2225.png)
-
点击左侧提交,可以查看更改文件,双击查看对比
![[图片]](https://i-blog.csdnimg.cn/direct/ffc50a2fa5344cfbb6c4c477a06d0cef.png)
-
勾选需要提交的文件,输入本次版本提交名称,点击提交并推送
![[图片]](https://i-blog.csdnimg.cn/direct/3b8d04f29d364f489d70b8617a1f78c9.png)
-
弹窗后,点击推送
![[图片]](https://i-blog.csdnimg.cn/direct/d60dbe3e379f491ca9e46ae480dd1cc4.png)
-
登陆仓库平台的提交账号
![[图片]](https://i-blog.csdnimg.cn/direct/a2cd34131cfb4126942482c18b3bcae4.png)
-
登陆后,去仓库查看提交记录
![[图片]](https://i-blog.csdnimg.cn/direct/789965fce2d44809ab326cc1d69c2e01.png)
-
PS:Logo解释
![[图片]](https://i-blog.csdnimg.cn/direct/47a251f494104bd680306c4670c46d1c.png)
代码更新
- 点击Update更新远程最新分支到本地的个人的test项目分支上
![[图片]](https://i-blog.csdnimg.cn/direct/959f9cd706414bd388365eb2b9bdf7e0.png)
实战演示
-
模拟远程分支更新了最新状态,进入仓库首页,点击新建文件
![[图片]](https://i-blog.csdnimg.cn/direct/a65404da57564214a3f8f027245c984f.png)
-
在根目录下新建 B.go,随便写入一些东西。最后点击保存到主分支中
![[图片]](https://i-blog.csdnimg.cn/direct/10e980e1d93d47a29a14c434d707ee00.png)
-
查看远程与本地的变化
![[图片]](https://i-blog.csdnimg.cn/direct/a94e65dade1e4688b08e72fc03b513d8.png)
假设此时这个B.go是程序员已经写完一个功能,进行提交。他将远程分支新增了一个版本。而你也就落后了一个版本。因此很明显你本地和远程的代码就不一样。
你本地有A.go,而远程没有
远程有B.go,你本地没有
-
将代码添加暂存区并提交推送
![[图片]](https://i-blog.csdnimg.cn/direct/5859cd388b2240d38c01f7cc98cc0e11.png)
![[图片]](https://i-blog.csdnimg.cn/direct/b0db1ad4110440da8dfb038741270de9.png)
-
提示:当前推送被远程拒绝,在推送前需要合并远程最新的更改
![[图片]](https://i-blog.csdnimg.cn/direct/230a56462c3a4553b9ad537bf4e957c1.png)
点击Merge进行合并即可,正常来说,你新增了一个文件B,远程别人新增了一个文件C并且已经更改到最新的分支。此时你已经落后别人一个版本。而你们对于其他任何文件都没有动的话,是没有事儿的。就直接取并集合并了。
-
提示合并提交成功
![[图片]](https://i-blog.csdnimg.cn/direct/86873b4dd29b4f4aa8454224a2a29a1e.png)
-
上一步骤说的取并集是什么意思呢?
![[图片]](https://i-blog.csdnimg.cn/direct/52f4e66f559b4d6197f59f9e04df2079.png)
可以看到这张图,你本地的A提交到了仓库的最新分支
同时,你落后的那个版本,别人提交的B也到了你的本地仓库
PS:其实这里做了几个事儿,首先会比对你的上一个基础分支与远程的区别。然后拉取远程的最新分支,将你的本地分支更新到最新状态。如果此时有代码冲突IDE会提示你需要保留本地还是远程。
如果你写你的代码,不动别人的代码,正常来说是没有冲突的。(前期是你两不会同时写一个文件,同时用一个分支)
此时只会更新别人刚写好的的模块。然后你本地就是远程最新分支 + 你本地新写的东西
然后IDA会给你将你本地的最新代码做为一个新的版本提交到最新的仓库的主分支,以此完成本次合并分支