多人上传导致Git冲突问题解决
引子:在云效上我发现我的前端文件推不上去了,经过学习后发现是这个原因:
因为我们一开始没有建立每个人属于自己的分支,并且也要分好前后端两个分支
问题描述
一开始后端文件直接推送在了远程仓库的master主线上,后来我也在idea直接把前端文件推送到这个master主线,然后idea显示推送失败,我查到推送失败是由于某种冲突导致的,再次拉取文件推送文件依然无用,最后也没有用git命令解决好。
解决问题
首先我们需要知道分支是什么东西。分支就像树分出来的枝干一样,每一根都是独立的,所以我们如果建立了自己独立的分支是不会互相干扰的,当然,每次你做的修改,提交的版本别人也不能看到,但是这样可以做到代码的互不影响,不会因为每个人推送的内容和目录结构等的不同造成冲突导致 推送失败。
但是仅仅用分支当然无法完成合作,我们最终是要一起看到代码的,所以git有一个功能——合并,对于我们的需求刚刚好。合并是什么呢?是指将一个分支的更改合并到另一个分支上的操作。合并可以将一个分支上的提交应用到另一个分支上,使两个分支的代码保持同步,这就是我们想要的效果。但是合并不是随随便便就能够完成的,他有以下条件:
a. 提交代码:在进行合并之前,确保已将自己的更改提交到相应的分支(也就是你自己的分支先提交一次版本)。这样可以保证合并操作是基于最新的代码。
b. 冲突解决:==如果两个分支上的代码在同一个地方进行了修改,或者在合并时两个分支的项目结构不同,可能会发生冲突。==
有的修改不发生冲突(目录结构相同且修改的为不同文件的不同位置),Git会自动帮你合并相应的代码
有的修改会发生冲突(与上一条相悖),需要手动解决,通过编辑代码文件来处理冲突部分。
c. 推送代码:合并后,此时远程分支和本地分支上的内容就完全相同了,将合并后的代码推送到远程分支上,提交成了最新的代码
所以每个成员应该拥有自己的分支,并且要设置一个前端远程分支和后端远程分支分别提供给前端人员和后端人员进行代码合作,而且要进行==适当次数的拉取和更新操作,不要过于频繁或滞后==。
当我们用合并将前端远程分支和后端远程分支分别完善后,如果要把前端代码和后端代码放在同一台机器上时,我们先要拉取前端远程仓库中最新版本,然后,在本地仓库中创建一个新的分支来存放后端代码,使用
git pull命令拉取后端分支的代码,这样,前端人员就可以在自己的分支上进行前端和后端代码的合并和测试。后端人员操作同理,不过要确保在拉取和合并代码之前,前(后)端先与后(前)端开发人员进行沟通,了解后(前)端代码的分支名称和最新状态。
当然,严谨的项目合作是需要每次完成一个模块内容就需要进行一个单元测试才能检测出项目是否出现问题。另外,项目出现冲突是非常正常的事情,最重要的是解决问题。
总结
以下是一些方法可以帮助减少冲突的发生:
- 使用分支:每个人可以在自己的分支上进行开发工作,这样可以避免直接在主分支上进行更改,减少冲突的可能性。在开发完成后,通过合并分支将更改合并到主分支上。
- 频繁地提交和拉取:每个人应该频繁地提交更改,并定期从远程仓库拉取更新。这样可以避免更改集中在某个分支上,减少冲突的可能性。
- 沟通和协调:团队成员之间的沟通和协调是避免冲突的关键。如果两个人同时对同一部分代码进行更改,及时的沟通可以帮助解决冲突并协商合适的解决方案。
- 代码审查:进行代码审查是另一个有效的方法,可以帮助发现潜在的冲突和问题。通过团队中其他成员的审查,可以提前发现和解决冲突,提高代码质量和合作效率。
- 文档和规范:制定一些规范和最佳实践,例如代码风格、命名约定等,以减少冲突的发生。确保所有成员了解和遵守这些规范。
再也不想有冲突啦!!!