CSDN话题挑战赛第2期
参赛话题:学习笔记
1、IDEA中配置Git
选择File→Settings打开设置窗口,找到Version Control下的Git选项,然后配置Git路径。如果Git安装在默认路径下,IDEA可以自动找到。选择路径后点击右侧Test,出现版本号提示即可【由于IDEA版本问题,提示的方式可能不一致】。
2、IDEA中使用Git
2.1拉取项目
选择File→New→Project from Version Control
实际工作中拉取的项目可能存在于公司搭建的GitLab中,我们这里从码云拉取,道理都是一样的。
复制此项目的git地址,填入URL,Directory是项目在你本地的地址,然后点击Clone即可。
打开它
2.2 选择正确的分支
实际项目中会存在很多分支,那我们需要拉取正确的分支来进行开发,在IDEA的右下角可以选择,默认是master分支。
想要哪个分支直接Checkout即可。
2.3 代码提交到暂存区
拉取代码后开始工作,比如这里我们修改了一些类中的代码,又新增了一些类。但是这个红色的要引起注意。
右键项目,选择Git→ Add 将文件信息加到暂存区
此时可以看到刚刚的Teacher类变为绿色了。
然后右键项目,选择Git→ Commit
选择我们想要提交的文件,填写提交信息,然后Commit,主要用于将暂存区里的改动内容提交到本地仓库中。
2.4 更新代码
一般在将本地代码提交到远程仓库时,最好先更新下远程仓库的代码到本地,从而避免不必要的冲突。【养成良好的习惯,每天到公司就先更新代码】
通过IDEA的右上角更新图标,或者通过快捷键
Ctrl + T
进行拉取
更新时有两种方式:
Merge incoming changes into the current brance
Rebase the current branch on top of incoming changes
两种方式我们通过图的形式来分析一下:
你和同事在同一个
Merge
看一下实际项目中的情况,最后会形成一个新的
commit
提交
Rebase
Merge具有更高的可追溯性,而Rebase则更整洁且易于审核。
2.5 推送代码
右键选择Git→ Repository→ Push 或者快捷键 Ctrl+Shift+K
调出界面后,排查没问题Push即可。
2.6 撤销提交
上一步说到排查没问题再Push,那如果有问题在Version Control的Log中可以看到刚刚Commit的记录
右键这条日志,可以选择撤销或者编辑提交信息
选default就可以
然后修改重新提交即可。【需要注意的是撤销当前分支最后一次提交】
2.7 储藏改变
场景:
1、代码没有commit,但是需要pull代码
2、代码没有commit,但是需要切分支
右键Git → Stash Changes
这样就可以把本地的改动藏起来
pull完代码后再通过Unstash Changes把藏起来的代码释放出来
2.8 撤销推送
【方法一】比如我这里新增学科类,Commit
然后推送到远程仓库了
这个时候我发现推送错了,可以在Version Control的Log中选中我想撤销的记录,选中Undo Commit
但是这个时候只是本地,不会影响到远程仓库,我们还需要做一次推送
然而你发现啥都没有,此时我们需要强推
查看远程仓库推送记录,刚刚的记录已经不在了。
而我们的代码在上述撤销提交中也提到了,改变的代码还是在的,不用担心
【方法二】
我们先把刚刚的改动代码再次Commit、Push。查看日志,我们想把第一条记录撤销,那么也就意味着版本回到第二条记录的位置
右键第二条记录,选择 Reset Current Branch...
此时会出现四个选项
- Soft:暂存区【Add后】和你本地改动代码都在,新增的文件你会发现它是绿色
- Mixed:本地改动代码在,暂存区没有了,你刚刚新增的文件是红色了
- Hard:在选择的回退点之后的所有更改都会被丢弃(包括未提交和已提交的文件)。这种方式会删除回退点之后的所有文件,影响巨大,除非真的有此需要,否则不推荐使用。
- Keep:在选择的回退点之后的所有已提交的更改会被丢弃,但未提交的文件会被完整地保存下来。如果真的有此需要,可以选择。
选择 Soft或Mixed后强推一次就可以了。
2.9 合并分支
首先Checkout到目标分支,然后选择想合并的分支右侧三角符,选择Merge或者Rebase
3、扩展
3.1 代码冲突
代码合并过程中避免不了有冲突的情况,实际项目中也存在有代码合丢了的情况,个人愚见:
一两行简单的冲突,喊同事一起看一看取舍一下即可。
复杂一点的冲突,建议把自己的代码复制一份出来,然后选择接受别人的,防止把别人的代码冲丢了,再使用代码比对工具将复制出来的代码与IDEA中的对比解决。
3.2 Commit Message
简明扼要的概括一下此次Commit的内容,附一张开源项目的图:
版权归原作者 LoneWalker、 所有, 如有侵权,请联系我们删除。