美文网首页
[IntelliJ] 使用IntelliJ解决Git代码冲突

[IntelliJ] 使用IntelliJ解决Git代码冲突

作者: EmilioWeng | 来源:发表于2019-08-26 23:20 被阅读0次

    在提交项目之前必须先pull代码进行更新,此项特别重要!!!
    如果pull代码没有冲突,才可以放心的进行push代码的操作;
    红色的项目表示新创建的项目,如果是蓝色,表示修改过的项目(红色和蓝色都表示待提交项目)。如果是红色的,则选择add,如果是蓝色,则需要选择commit。当add操作完成之后项目颜色会变成绿色。

    代码冲突时的解决方案

    在idea开发工具中使用Git时,主要用到的快捷按钮如下五个:

    按钮

    这五个按钮的使用说明及在idea中如何配置和使用git可参考https://github.com/DayThink/IntelliJ-IDEA-Tutorial/blob/newMaster/vcs-introduce.md

    只要发生冲突了,idea都会弹出一个图形化的merge对话框,在merge对话框上引导用户去解决冲突。

    commit冲突

    选择VCS

    如上图所示,当提交代码时发生冲突,此时操作步骤如下

    Commit 解决冲突

    在这里我们希望将本地冲突代码和服务端的代码都保留,此时在上图中点击中间的两个红色按钮后即可将本地和服务端的冲突代码全部保留,在中间一栏result中科院预览到冲突解决后的代码情况,冲突处理完成后如下图

    合并代码

    在上图merge对话框中点击右下角的apply时,一般会在idea的右下角出现如下的Push rejected提示对话框

    Push Rejected

    上图对话框提示我们,在push的时候发生了失败,此时要注意,将本地代码更新提交到服务端,需要经历两个步骤:commit和push,commit相当于提交到了本地库,而push则是将本地库提交更新到服务端。根据上图提示push rejected,我们可以发现冲突已经在本地库commit时解决了,我们只需push一次即可,因此后续操作只需要push一次即可,如下:

    在冲突的文件上,右键

    Push代码

    push完成后即可将本地库的文件提交到服务端。

    Pull冲突

    选择VCS

    如上图所示,点击更新按钮时发现冲突,提示用户如下所示的merge页面上进行冲突的处理,比如此处我们希望将本地修改和远端服务器的修改均保留,因此按照如下图所示的红色1和2操作,合并到中间的result一栏中。

    解决冲突

    冲突解决后,如下所示:

    合并代码

    至此,更新冲突就已解决完成。

    常用的Git命令

    常用的Git命令

    Git版本回退

    首先,根据git提交的历史记录中确定回退的版本

    Git历史记录

    将上述拷贝的Revision Number记录下来,如:4b93db12de20cdf07edcb7bc9165bac2laf70b17

    接下来使用命令行

    其次,恢复到指定的commit hash

    git reset --hard resetVersionHash
    eg: git reset --hard 4b93db12de20cdf07edcb7bc9165bac2laf70b17
    

    最后,把当前分支强制提交到远程

    git push -f origin currentBranch
    eg: push -f origin master
    

    以上三步操作后,就将本地和git远端的代码回退了。

    分支操作

    新建分支

    首先在本地新建一个分支,如dev;

    新建分支

    接下来执行git push origin dev:dev;git push origin dev;
    上面命令表示,将本地的dev分支推送到origin主机的dev分支,如果后者不存在,则会被新建。
    git push命令用于将本地分支的更新,推送到远程主机,它的格式如下:
    $ git push <远程主机名> <本地分支名>:<远程分支名>
    如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
    $ git push origin master
    上面命令表示,将本地的master分支推送到origin主机的master分支,如果后者不存在,则会被新建。
    如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。
    $ git push origin :master等同于$ git push origin --delete master
    上面命令表示删除origin主机的master分支。
    如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。
    $ git push origin上面命令表示,将当前分支推送到origin主机的对应分支。 如果当前分支只有一个追踪分支,那么主机名都可以省略。 $ git push最后需要注意与git pull的区别,从远程分支名拉到(合并)本地分支名上: $ git pull <远程主机名> <远程分支名>:<本地分支名>

    本地与origin分支的对应设置

    查看本地分支与远端origin的分支对应情况 $ git remote show origin设置本地分支与远端分支的对应关系,如:将本地dev分支与远端的dev分支进行绑定 git branch --set-upstream dev origin/dev

    分支合并

    如下所示,将feature分支合并到dev分支,之后将合并后的dev分支push一次到origin即可。

    分支合并

    相关文章

      网友评论

          本文标题:[IntelliJ] 使用IntelliJ解决Git代码冲突

          本文链接:https://www.haomeiwen.com/subject/popjectx.html