Git版本控制及Goland使用Git教程(一):https://developer.aliyun.com/article/1417330
3.3.8 解决合并冲突
push之前要先pull,把冲突解决了再提交上去
在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。
A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要
推送到远程仓库,此时B用户晚于A用户,故需要先拉取远程仓库的提交,经过合并后才能推送到远端分
支,如下图所示
在B用户拉取代码时,因为A、B用户同一段时间修改了同一个文件的相同位置代码,故会发生合并冲突。
远程分支也是分支,所以合并时冲突的解决方式也和解决本地分支冲突相同相同,看[2.3.6 解决冲突]
下面来做个示例
- 刚开始A,B相等
- A更改file2.go,内容为updataforA,B更改file2.go,内容为updataforB。A,B都add和commit,A push到远程仓库
- A,B修改了同一文件,由于B用户晚于A用户push,故需要先拉取远程仓库的提交。在B用户拉取代码时,因为A、B用户同一段时间修改了同一个文件的相同位置代码,故会发生合并冲突。
- 处理文件中冲突的地方
- 将解决完冲突的文件加入暂存区(add)
- 提交到仓库(commit)
- B push到远程服务器,A pull拉取更新,观察git log,至此冲突解决了
4. 在IDEA中使用Git
4.1 在IDEA中配置Git
如果Git安装在默认路径下,那么idea会自动找到git的位置,如果更改了Git的安装位置则需要手动配置下Git的路径。选择文件→设置,打开设置窗口,搜索git选择下面的git选
项:
点击测试按钮,现在执行成功,配置完成
4.2 在Idea中操作Git
场景:本地已经有一个项目,但是并不是git项目,我们需要将这个放到码云的仓库里,和其他开发人员继续一起协作开发。
注意,这里的.gitignore里面写的是
.git
.idea
因为不想让.git和.idea也上传
4.2.1 创建项目远程仓库
4.2.2 初始化本地仓库
4.2.3 设置远程仓库
4.2.4 提交到本地仓库
4.2.5 推送到远程仓库
4.2.6 查看git log版本相关内容
4.2.7 再次上传,观察代码不同处
4.2.8 克隆远程仓库到本地
4.2.9 创建分支
一般使用第一种方式较多,因为它可以在任意依次提交的节点上增加分支
4.2.10 切换分支及其他分支相关操作
4.2.11 解决冲突
当前,A已经push到远程服务器上了
B commit了之后pull了一遍,发现有冲突,需要手动解决
选择合并之后,手动去处理
最后再点推送,冲突就解决了
如果B commit之后直接push了,没有pull,那么也会让你去解决冲突
4.3 场景分析
- 由组长,基于本项目创建本地仓库;创建远程仓库,推送项目到远程仓库。
- 每一位组员从远程仓库克隆项目到idea中,这样每位同学在自己电脑上就有了一个工作副本,可以正式的开始开发了。我们模拟两个组员(组员A、组员B),克隆两个工作区。
- 组员A修改工作区,提交到本地仓库,再推送到远程仓库。组员B可以直接从远程仓库获取最新的代码。
- 组员A和组员B修改了同一个文件的同一行,提交到本地没有问题,但是推送到远程仓库时,后一个推送操作就会失败。
解决方法:需要先获取远程仓库的代码到本地仓库,编辑冲突,提交并推送代码。
4.4 ide中的铁令
- 切换分支前先提交本地的修改
- 代码及时提交,提交过了就不会丢