01 引言
上一期借助Idea
,完成了Git
仓库的建立、配置、代码提交等操作,初步入门了Git
的使用。然而日常开发中经常面临各种各样的问题,入门级的命令远远不够使用。
这一期,我们将展开介绍Git
的日常处理命令,解决日常问题,熟悉Git
操作。
02 Git分支管理
一个新的项目开始,我们需要从主干分支上拉取开发分支。我们还是以上一期的project-test
仓库为例。
2.1 创建新的分支
按照下图所示操作:
创建dev-20250520
分支:
Git
命令:
# 创建新分支
git checkout -b dev-20250520 origin/main
# 切换分支
git checkout dev-20250520
查看所有本地和远程分支:
对应的命令:
# 查看所有本地和远程分支
git branch -a
# 查看远程分支
git branch -r
# 查看本地所有分支
git branch
2.2 提交代码
编写实例代码,直接提交到本地仓库。
其实也可以直接从控制台看看Git
执行了哪些命令:
2.3 推送到远程仓库
首次推送到远程仓库会自动创建分支名的远程仓库分支。正常开发中我们的代码应该是直接从分支项目检出的,不需要创建远程仓库的分支。
远程仓库查看:
03 处理冲突
为了制造冲突,直接在GitHub
上修改GitTest.java
文件。
3.1 制造冲突
本地修改同一个文件(GitTest.java
),提交本地仓库没有冲突,但是推送远程仓库时,就会出现冲突。
3.2 解决冲突
冲突的解决保留历史分支记录,我们一般会选择Merge
处理。
选择Merge
之后,Git
会自动从远程仓库拉取最新的代码,并在工作区标记处冲突的位置(如上图)。我们通过Idea
继续Merge
处理冲突。
左右两侧分别表示本地仓库和远程仓库,中间是处理的最终结果。黄色代表相对去中间工作区的改动的地方。点击箭头即可完成代码移动。
假设我们两边的代码都需要,我们只要一次点击箭头即可完成代码的合并(冲突的解决),再次提交到本地仓库。
代码提交到本地仓库之后,就可查看该分支的所有变更记录:
也可以通过命令查看:
# 查看历史提交记录
git log
命令结果:
最后推送到远程仓库即可。
04 代码回滚
代码回滚是一个优秀的设计。网上不是有这样的梗,产品做了第一版方案后给老板看,老板觉得不满意,然后来来回回的改,最后老板觉得还是第一版比较好。产品的心中一万只羊驼奔腾而过。
程序员同样面临的这样的场景,但是代码回滚完美的解决了这样的问题。
我们模拟三版提交方案。在GitTest.java
增加提交的版本信息:
/**
* 第一版提交方案
*/
private void firstCase() {
System.out.println("第一版Case");
}
/**
* 第二版提交方案
*/
private void secondCase() {
System.out.println("第二版Case");
}
/**
* 第三版提交方案
*/
private void thirdCase() {
System.out.println("第三版Case");
}
假设我们要回到第一版的方案:
选中第一版记录,然后右键复制版本号
4.1 未推送远程的回滚
命令:
# --hard 底回退到指定提交,丢弃所有未提交的更改
# –mixed(默认):移动 HEAD 并重置暂存区,但保留工作区修改
# –soft:仅移动 HEAD,保留工作区和暂存区
git reset --hard 回退的版本号
结果迅速到达第一版:
4.2 已推送至远程的回滚
命令:
# 回退到指定的版本号
git revert 版本号
如果是相同的位置的代码修改可能会出现冲突,正常解决即可
解决之后,需要重洗提交代码。
05 合并分支
代码合并阶段一般是出现在开发分支过久,迭代多次需要合并新分支,另外一个就是发布代码之后,必须将代码合并到主干上。
案例中我们一直在dev-20250520
开发,我们将开发分支合并到主干(main
)分支上。首先我们需要需要切换分支到主干分支上。
切换分支的命令:
# 切换到主干分支上
git checkout main
Idea的操作:
切到主干分支发现并没有GitTest.java
的文件:
分支合并:
合并之后代码会之间保存到暂存区,直接推送到远程即可:
06 小结
今天就一个简单的模拟实战项目,练习了Git
日常处理问题的命令。如果有什么更加有趣的命令,评论区留言讨论!