IntelliJ IDEA 之 Git 使用


1. 本地安装 Git

官方下载地址
不过这个地址一般下不动,我们可以选择在腾讯软件中心下载,速度很快。
腾讯软件中心下载地址

接着就是安装了,一直点击Next即可,使用默认安装。这个页面选择git使用的命令行,建议使用第一个git自带的即可。

接着需要设置git的用户名和邮箱,这个用户名会显示在提交历史中。打开git-base.exe,这里需要执行两个命令,一般直接设置全局的即可:

--修改当前项目用户名和密码:
git config  user.name  "username"
git config  user.email  "email"
--修改完毕查看一下:
git config user.name
git config user.email
--修改全局用户名和密码:
git config --global user.name "Your Name Here"
git config --global user.email "your_email@example.com"
--修改完毕查看一下:
git config --global user.name
git config --global user.email

如果这里没进行设置,会在你第一次提交的时候提示你设置:
image.png

2. IDEA 配置 Git

使用的IDEA版本为2019.2,首先需要安装Git软件,然后在Settings选项中配置Git安装路径,点击Test进行测试。

3. 首次检出项目

首次检出需要在 IDEA 顶部工具栏选择VCS--->Checkout from Version Control--->Git

然后在URL填写上公司GitLab中目标项目远端地址,目录Directory注意填写到具体的项目名(图片上的是错的,应该是D:\IdeaProjects\udesk_cem)点击Test,接下来会提示输入用户名和密码。


填写好用户名和密码后,如果正确,会提示连接成功,接着点击克隆,将远端项目检出到本地。

这是首次检出的过程,之后的每次检出就不需要这么麻烦了,直接在IDEA右下角的分支列表进行操作即可。

4. 项目分支创建

可以在右下角的分支列表上方选择+New Breach新建分支,新建的分支是基于当前所在分支的代码的。所以在新建分支之前可以先切换到想要作为基础版本代码的分支,再进行创建分支操作。
New Branch
Create New Branch

5. 项目分支切换

可以直接在右下角的分支列表中选择需要切换的分支,直接鼠标左键点击,选择想要切换的分支。切换完毕会在右下角显示当前所处的分支名称。

(1)本地分支Local Branches的检出切换选择Checkout
本地分支切换
(2)远端分支Remote Branches的检出选择Checkout As...,新的分支名称不需要修改,默认和远端分支名称一致。点击OK即可。
远端分支检出
分支名称

6. 项目刷新分支

有时候右下角的分支列表里没有想要检出的分支,也就是说你本地显示的远端分支列表和GitLab远端分支列表不同步,这时只需要点击顶部工具栏的VCS--->Git--->Fetch(取来)进行重新拉取即可实现右下角远端分支列表的刷新。
同步分支列表

7. 分支代码提交

在开发分支上开发完毕后,可进行代码提交,先提交(Commit)到开发分支的本地仓库,再推送(Push)到开发分支的远端仓库。

首先进行Commit操作,在项目上右键--->Git--->Commit--->Directory...,可以在弹出界面查看本次提交的文件,可以添加提交信息,还可以在右下角选择提交选项。默认是Commit,也就是只提交到开发分支的本地仓库,还有一个选项是Commit And Push...表示会将Commit操作和Push操作连起来,在Commit完毕后会接着提示你进行Push操作,也就是推送到开发分支的远端仓库。

也可以在IDEA下方选项卡Version ControlLocal Changes菜单下选中要提交的文件进行Commit,也可以右键Default Changelist,选择Commit

提交
接下来进行Push操作,可以选择直接在项目上右键--->Git--->Repository--->Push。注意不要勾选弹出框左下角的Push Tags,否则会推送到所有远端分支。注意检查弹出框的左上角的远端分支名称是否正确。
Push
推送

8. 开发分支合并主分支代码

本地分支为开发分支。将主分支的代码合并到开发分支上。
在开发分支上开发完成后,需要进行测试。但是在开发期间,可能其他同事已经在主分支上提交了代码,这时就需要rebase主分支的提交内容到开发分支上。

(1)首先rebase主分支远端仓库代码到开发分支的本地仓库。注意需要在右下角的分支列表中选择远端分支的主分支仓库进行rebase,这样是为了rebase到最新的主分支内容。Rebase Current Onto Selected是将当前重设为选定的意思。
rebase 主分支
(2)如果有代码冲突,会有弹窗提示进行代码合并和冲突处理。处理完后进行再次提交,最后需要进行强推到远端,对开发分支远端仓库的提交记录进行覆盖。(这个注意一定要强推,否则提交记录会出现分叉)。
强推

9. 主分支合并开发分支代码

本地分支为主分支。将开发分支的代码合并到主分支上,最后使用主分支进行上线。

(1)首先切换本地分支为主分支,同步主分支远程仓库的最新代码到本地。
项目右键--->Git--->Repository--->Pull
Pull
(2)接下来rebase开发分支远端仓库代码到主分支本地仓库。
rebase 开发分支
(3)进行push操作,将主分支的本地仓库代码推送到主分支的远端仓库。(这里不需要使用强推)

10. 代码提交记录进行合并操作

选中需要合并的记录,右键选择Interactively Rebase from Here(交互式地从这里重新建立基地)
合并提交
除了第一个选中的开始节点选择pick外,其他节点选择squash(压缩)。
压缩
接下来写上压缩后的提交记录描述。点击Resume Rebasing(重新开始),最后把压缩完的提交记录force push到远端即可。
填写日志记录
有时合并的过程中放弃了,会显示一直处于Rebase中,这时可以直接点击右下角分支列表中的Abort Rebase,中止Rebase操作。
丢弃
操作过程示例:

目标: 对多次提交记录进行合并。

(1)比如我需要把2号提交合并到1号提交中,也就是把这两合并为一条提交记录。直接在1号提交上右键,选择Interactively Rebase from Here(交互式地从这里重新建立基地)
在这里插入图片描述
(2)接着会弹出Rebasing Commits窗口,将2号提交选为squash(压缩),点击Start Rebasing
在这里插入图片描述
(3)接这会他弹出Additional Rebase Input(重新输入描述信息)窗口,这里可以填写上压缩合并后提交记录的描述信息。点击Resume Rebasing(重新开始)
在这里插入图片描述
(4)接下来如果你压缩的是远端的提交记录,则需要进行force push(强推)到远端;如果压缩的只是本地的提交记录,则直接正常push即可。

注意,Action 有以下几种选项:

pick(选择) / edit(编辑) / skip(略过) / squash(压缩) / reword(重述) / fixup(修正)

  • pick 就是 cherry-pick。
  • reword 就是在 cherry-pick 的同时你可以编辑 commit message,它会在执行的时候跳出一个界面让你编辑信息,当你退出的时候,会继续执行命令
  • edit 麻烦点,cherry-pick 同时 ,会停止,让你编辑信息,完了后,你要用 git rebase --continue 命令继续执行,相对上面来说有点麻烦,感觉没必要啊。
  • squash,合并此条记录到前一个记录中,并把 commit message 也合并进去 。
  • fixup ,合并此条记录到前一个记录中,但是忽略此条 commit message。

这种操作需要合并的提交是连续的,一般用于把同一个开发任务的多次连续提交合并为一次提交。我试了下面这种不连续的提交记录合并操作,这样操作的话会把2号提交合并到它上面的那个提交中(也就是图中的“CSE-6:修改客户获取方式”),并没有合并到1号提交中。
在这里插入图片描述
在这里插入图片描述
把2号提交记录合并到1号提交记录:
在这里插入图片描述
在这里插入图片描述

11. 常用操作的快捷方式

如果你使用的是 Git 管理项目,每次更新远端仓库代码都需要选中项目名--->Git--->Repository--->Pull...,操作比较麻烦,可以直接使用Ctrl+T快捷键,该快捷键可直接从 Git 更新项目,免去了多次点击选择 Pull 的操作。注意弹出框选择 Rebase 。同样,Ctrl+K能直接进行项目提交,免去了多次选择进行提交的操作。
在这里插入图片描述
使用 Ctrl+` 可直接显示版本控制中的常用操作菜单。可看到一些常用的快捷键。
在这里插入图片描述
使用 F4 可以直接打开提交记录中的文件,进行编辑。
在这里插入图片描述

12. 开发分支部分合并到主分支

使用到Cherry-Pick

目标:将develop分支的部分提交记录合并到master分支。

(1)首先切换到需要进行代码合并操作的分支,比如我们是master分支。
在这里插入图片描述
此时的Version Control中的Log下的Branch选择的是All,表示显示的是所有分支的提交记录,应该可以看到好多的分叉记录。
在这里插入图片描述
(2)将Log下的Branch切换到所要合并的代码所在的分支。比如我们是develop分支。
鼠标左键点击Branch,点击origin/...,会出现远端所有分支的列表,在列表中选择目标分支即可。
在这里插入图片描述
这里选中develop分支,此时Log下显示的就是develop分支的所有提交记录了。
在这里插入图片描述
(3)接着就可以直接按住Ctrl,选择需要合并的提交记录了,选中后右键,选择Cherry-Pick即可。后续就是正常的处理冲突和提交流程了。
在这里插入图片描述

13. 主分支被强推的解决办法

需要使用到Reset Current Branch to Here…

如果有人强推了主分支,此时我们本地的就无法提交,会产生冲突。

  • 这时如果本地没有其他修改,可以直接删除本地代码,重新检出。
  • 还可以询问下同事强推的记录开始的地方,我们可以做一个回退。也就是在提交记录中右键具体的提交记录,选择“将当前分支重置到这里”来实现。之后再进行一次 Push 即可。
    在这里插入图片描述
    在这里插入图片描述
    翻译一下这个界面:
    Thie will reset the current branch head to the selected commit, and update the working tree and the index according to the selected mode.
    将当前的分支头重置为所选的提交,并根据所选模式更新工作树和索引。
    Soft:File will not change, differences will be staged for commit.
    文件将不会更改,差异将暂存以提交。
    Mixed:File will not change, differences will not be staged.
    文件将不会改变,差异将不会暂存。
    Hard:File will be reverted to the state of the selected commit. Waring: any local changes will be lost.
    文件将恢复到所选提交的状态。警告:本地的所有改变都将丢失。
    Keep:File will be reverted to the state of the selected commit. but local changes will be kept intact.
    文件将恢复到所选提交的状态。本地的改变将会被保留。

14. 移除被添加到版本管理的文件

场景:有文件手误操作添加到了版本管理,如下图中的 mvnw 文件
在这里插入图片描述
现在想要将该文件从被管理文件中删除,图形界面没有找到操作方法,只能通过命令行来操作了:

D:\WorkGroup\IdeaProjects\data-search>D:\WorkGroup\Git\bin\git rm --cache -r mvnw
rm 'mvnw'

D:\WorkGroup\IdeaProjects\data-search>

可以发现,mvnw 文件已经在未进行版本管理的文件列表中了。
在这里插入图片描述
无关内容:对于没有.git目录的文件夹下,会有以下提示,直接使用git init就可以了。

D:\WorkGroup\Git\bin>git rm --cache -r .mvn
fatal: not a git repository (or any of the parent directories): .git
D:\WorkGroup\Git\bin>git init
Initialized empty Git repository in D:/WorkGroup/Git/.git/

D:\WorkGroup\Git\bin>

15. IntelliJ IDEA 使用 Git 慢的问题

最近公司给开发机断网了,就是说不能连接外网了,然后我就发现我的 IDEA 中执行 Git 相关的操作的时候特别的慢,很是抓狂。断网前不是这样的,执行很快的。下面是@遥星的文章,解决了我的问题,这里转载下,做个记录。

我是按照下面方法修改的,直接改了 IDEA 安装目录下的 bin 目录下的那两个文件的后缀。


起因
在公司电脑上使用 IntelliJ IDEA 的时候发现操作 Git 特别的慢,status、fetch、pull、checkout、commit 等基础操作都执行的特别慢,下方的 Task 进度条一直处于等待中,等待差不多 10 秒多的时候才开始执行进度。最难以忍受的是,在 Settings 里面检查 Git 的版本操作都需要接近 20 多秒的时间,才能返回结果。

结论
花了几天时间跟踪 IDEA 的执行日志以及翻看 IDEA Git 插件的源码,偶然发现 IDEA 在执行 Git 命令的时候,其实是调用了一个 exe 程序来执行命令的,问题就出在这个 exe 程序上面,猜测应该是公司给初始化的系统本身有什么域设置不合理导致在我这个系统版本执行的特别慢,就像是队列里面排队等候一样,最终试着把这个 exe 改了后缀名,问题就解决了。

解决方法
昨天公司看到有小伙伴在大群里问运维同事能不能处理一下这个问题,我突然意识到居然不止我一个人遇到了这个问题,所以分享到知乎上,供遇到这个问题的朋友们参考。

处理方案:只需要删除掉 JetBrains 系 IDE 安装目录下的 runnerw.exe(64 位系统是 runnerw64.exe)或者直接更改后缀名,反正只要让 IDE 找不到这个 exe 就可以,然后这个问题就解决了。不需要重启 IDE ,即时生效,如果你使用的是 JetBrains ToolBox 来安装升级 IDE 的话,每次 IDE 更新,你都需要重新去屏蔽那两个文件;如果是官网下载安装包安装的,改一次就行了。

我的这两文件是在下面目录中:

D:\work\IntelliJ IDEA 2021.1.2\bin

在这里插入图片描述
关于 Toolbox
如果你是 Toolbox 安装的 IDE,要找到 IDE 的安装目录的话,你可以在开始菜单搜索 IDE 快捷方式右键"打开文件所在的位置";也可以直接在 Toolbox 里找到你的 IDE,然后点击右侧的"三个点"更多菜单,里面选择"Settings"进入 IDE 设置,依次点击"Configuration"展开选项,找到"Install lacation",可以直接复制安装路径,或者点击下方的"Show…"直接打开安装目录。

后续
已确认,卡顿和执行慢的根源是某些钩子程序,我这边的是"IP Guard"导致。

如果你是公司电脑,按照上面提到的方法处理就行,毕竟公司的没办法。

如果你是自己私人电脑,那就想办法删掉这个"IP Guard"吧,这个玩意是用来监控你的电脑的,有些公司是强制要求,然后通过域设置推送到你的计算机上的,那就不能删除。如果是私人电脑,百度一下怎么删除,按照文章,一般是通过 pe 进去,然后删掉那些文件就行了。

关于如何查看你的电脑是否也被"IP Guard"所支配,去看看你 C 盘系统目录就知道啦,具体路径的话,看看有没有"winrdlv3.exe"这个程序就好了,参考路径如下:

C:\Windows\System32\winrdlv3.exe
C:\Windows\SysWOW64\winrdlv3.exe

16. 本地新建项目添加 Git 管理

在这里插入图片描述
如果有远程仓库,提交的时候配置远端地址即可。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值