IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Idea中解决Git冲突问题及merge代码消失问题 -> 正文阅读

[开发工具]Idea中解决Git冲突问题及merge代码消失问题

Idea中解决Git冲突问题及merge代码消失问题

1 Idea中使用git的小问题及技巧

  • 我们可以通过Idea直接从GitLab或GitHub等平台上拉取代码
File - New - Project from Version Control

在这里插入图片描述

输入对应项目的URL即可

在这里插入图片描述

  • 如果上述的小技巧拉取不下来,尝试勾选下图的选项
    在这里插入图片描述

2 Idea解决冲突问题

2.1 演示冲突(GitLab)

①首先在GitLab中或者任意代码托管平台创建一个自己的仓库

git clone 仓库的URL

通过上面的命令将仓库克隆下来

②在自己的项目中,任意创建一个类
在这里插入图片描述

③将其提交commit到本地仓库,然后push到远程仓库

在这里插入图片描述
④然后在远程库任意修改代码

此处我添加了一句

在这里插入图片描述

⑤修改本地代码再尝试将其推送到远程仓库

这个时候会因为我们本地的代码不是远程库最新的版本,而导致版本冲突

在这里插入图片描述

⑥产生冲突
在这里插入图片描述

2.2 解决Git版本冲突

①这个时候选择rebase(一定选择rebase,企业中规范要求,直接merge,可能会导致一系列问题)

因为我之前将rebase作为默认选项,所以这里就跳过选择了

在这里插入图片描述

②根据自己的要求进行操作
在这里插入图片描述

Accept Yours 就是直接选取本地的代码,覆盖掉远程仓库的
Accept Theirs是直接选取远程仓库的,覆盖掉本地的
Merge  自己手动进行选择,修改

③一般情况下我们都会手动Mege
在这里插入图片描述

这里左边部分是我们本地仓库的代码,右边部分是远程仓库的代码,中间的result就是我们修改

之后的结果,左下角的AcceptLeft和Accept Right其实就是相当于之前的Accept Yours和Accept

Theirs,右下角的Apply是确认合并,Abort是取消合并。

我们在result中修改好自己想要merge的代码之后,点击Apply就可以了,至此,冲突被解决了

详细文档:
https://www.cnblogs.com/newAndHui/p/10851807.html

2.3 rebase失败

如果我们rebase失败:
在这里插入图片描述
解决办法:

$ git add .(只要有修改都需要git add . 或者git add 具体的文件)
$ git rebase --continue
Applying: 【HCF】*******************
$ git push origin ******************************
git rebase --continue 就相当于 git commit 

3 Git报错

Git冲突时,不小心点了merge操作,导致本地与远程仓库的代码都凭空消失了
此处,我的是src文件夹被删除了

3.1 Git操作merge时,代码消失

①通过git log查找出修改过指定文件的commit
目前项目文件已经被删除了,但是根据项目的代码结构,可以推测出原本是存在src这个文件夹的

尝试检测一下在所有的历史记录中对该文件的处理,用到的命令如下:

git log --stat --full-history --simplify-merges -- src

在这里插入图片描述
上述命令将会展示涉及到该文件夹更改的commit,从输出结果我们可以看到,在结尾为857的commit中,我们不小心删除了11行代码

②通过切换到该版本

git checkout 982918cd36668686c2644decbf0a0e4988283857

在这里插入图片描述
然后回到项目,可以发现我们的之前的代码已经恢复了

为什么会出现这样的情况呢?
分析:https://cloud.tencent.com/developer/article/2033888

3.2 Git pull --rebase报错

git pull --rebase报错

error: cannot pull with rebase: Your index contains uncommitted changes.
error: please commit or stash them.

这个是因为我们本地有更改没有提交上去
如果我们需要提交,就git add, git commit;提交上去
如果不需要提交更改,就git stash,暂存
解决步骤:

根据提示进行以下操作

  • git stash
  • git pull --rebase
  • git stash pop

或者:

  • git add *
  • git commit
  • git pull -rebase

然后我们就可以提交了
在这里插入图片描述

4 拓展:

4.1 git clone 与 git pull 区别

git clone是本地没有repository,将远程的仓库整个下载过来

git pull是本地有repository,将远程仓库里新的commit数据(如果有)下载过来,并且与本地代码merge

4.2 merge与rebase区别

详解:https://zhuanlan.zhihu.com/p/75499871
https://segmentfault.com/a/1190000038547167

4.3 本地提交代码到远端

通常,在开发中,我们提交之前都会commit之后,再pull远程仓库,保证当前是最新版本,然后push到远程仓库

  • 选择merge操作
    在这里插入图片描述

  • 选择rebase操作

在这里插入图片描述

4.4 暂存部分代码不提交到远程仓库(git stash)

在开发的时候,我们难免会碰到有同事需要我们合并代码,但是这个时候我们自己也在本地写了一些,并且由于一些原因(没有测试完成),自己并不想要将这些代码提交到远程库。

那么这个时候该怎么办呢?git stash就起作用了
①右击项目名,选中git, 选择 stash changes(存放)
在这里插入图片描述
②然后git pull,从远程仓库拉取最新代码进行合并(merge)
③获取到最新代码之后,unstash,获取到之前我们在本地写的代码
在这里插入图片描述

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 21:15:36  更:2022-09-24 21:17:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 2:53:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计