java面试题/认证答辩 --- git相关

git的几个层次:
熟悉:能使用常用的Git命令和客户端工具管理代码
掌握:熟练使用Git命令,理解Git flow
精通:擅长Git合并,回退,Tag等相关的Git flow操作命令
综合应用:能配合CI/CD工具开发自动脚本

参考: https://www.cnblogs.com/jztan/p/6068780.html
:https://zhuanlan.zhihu.com/p/198066289
https://juejin.cn/post/6844903634006720526
https://blog.csdn.net/yxlshk/article/details/79944535
https://www.jianshu.com/p/c17472d704a0
https://zhuanlan.zhihu.com/p/75499871

1 介绍一下gitflow
Git是一种分布式版本控制系统
工作原理:
java面试题/认证答辩 --- git相关_第1张图片
Workspace: 工作区,执行git add *命令就把改动提交到了暂存区,执行git pull命令将远程仓库的数据拉到当前分支并合并,执行git checkout [branch-name]切换分支
Index: 暂存区, 执行git commit -m ‘说明’ 命令就把改动提交到了仓库区(当前分支)
Repository: 仓库区(或本地仓库),执行git push origin master提交到远程仓库,执行git clone 地址将克隆远程仓库到本地
Remote: 远程仓库,就是类似github,coding等网站所提供的仓库

2 git flow的几个重要分支


长期分支:

master 分支:
用于上线的分支,保护性分支,只包含经过测试的稳定代码,开发人员不能直接工作在此分支上,也不能直接提交改动到 master 分支上。

develope 分支:
是开发人员进行任何新的开发的基础分支,当开始一个新的feature 分支的时候,要从 develop 分出去;另外此分支也汇集所有的已完成的功能,等待合并到 master 分支上线。

临时分支

feature 分支: 每一个新功能的开发都应该各自使用独立的分支。为了备份或便于团队之间的合作,这种分支也可以被推送到中央仓库。但是,在创建新的功能开发分支时,父分支应该选择develop(而不是master)。当功能开发完成时,改动的代码应该被合并(merge)到develop分支。功能开发永远不应该直接牵扯到master。

release 分支 发布分支, 在此分支只进行bug修改,不会再进行新功能增加了,当一切都就绪的时候,release可以合并到master分支

hotfix分支 补丁分支 生产环境发现新的Bug时候,可以基于release分支或者master分支拉一个hotfix分支进行bug修改,bug修复完成后合并回master或release分支

git标签: 参考: https://blog.csdn.net/dx18520548758/article/details/84770394

git 回滚/撤销

git  log -3   查看最近3次提交  找到 commitid

java面试题/认证答辩 --- git相关_第2张图片

git reset 和 git revert 的区别
git reset 简单暴力的将版本置回到某个版本,现在有过a、b、c、d四次提交,提交顺序为a、b、c、d,现在为d。使用git reset恢复到a之后,看git log,就只剩下a了,b、c、d都不见了。(这个时候显示的本地仓库,不是远程仓库)

git reset  --hard  commitId
# 这个指令的意思是将本地代码 回滚到指定的commitId

提交之后是这样的
java面试题/认证答辩 --- git相关_第3张图片

git revert 意为 到当前版本到目标版本为重做

git revert -n comitId  

提交之后是这样的
java面试题/认证答辩 --- git相关_第4张图片

git 合并操作

选择 merge 还是 rebase?
java面试题/认证答辩 --- git相关_第5张图片

你可能感兴趣的:(面试刷题,git)