版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Git高频面试题及详细答案(实战接地气版)一、Git基础概念(初级必问)1、简单说说Git和SVN的核心区别?参考答案:核心差别就是Git是分布式,SVN是集中式。1.Git每个人本地都有完整仓库,断网也能提交、分支切换、回滚,联网后再同步就行;SVN必须联网,所有版本都在服务器,本地只有当前代码。2.Git分支轻量,创建、合并、删除秒级完成,日常开发多分支并行很方便;SVN分支笨重,操作慢,大家一般不爱建分支。3.Git存储的是快照,每次提交都是完整代码快照,速度快;SVN存储的是文件差异,版本多了服务器压力大。4.Git本地可以做版本回溯、暂存、cherry-pick等复杂操作,SVN本地几乎没有版本管理能力。2、Git的三个工作区域分别是什么?各自作用?参考答案:1.工作区:本地实际编辑代码的文件夹,看得见、改得了,是原始代码目录。2.暂存区(索引区):临时存放待提交的修改,执行gitadd就是把改动放到这里。作用是可以选择性提交部分文件、部分修改,不用一次性提交所有改动。3.本地仓库:执行gitcommit后,暂存区的内容就会固化到本地仓库,生成唯一版本节点,永久保存本地版本记录。简单流程:工作区修改→gitadd到暂存区→gitcommit到本地仓库→gitpush到远程仓库。3、gitadd、gitcommit、gitpush三者区别?参考答案:很多新手容易混,其实分工很明确:1.gitadd:只是把修改加入暂存,代码还没生成版本,本地仓库没记录,随时可以撤销。2.gitcommit:把暂存区内容生成一个正式版本,保存到本地仓库,生成commit哈希值,本地已经留存版本,就算删了工作区代码也能找回。3.gitpush:把本地仓库的新版本同步推送到远程仓库,让团队其他人能拉到你的代码。总结:add存临时、commit存本地、push存远程。二、常用命令与实操(日常开发高频)4、gitstash什么时候用?常用参数有哪些?参考答案:适用场景:正在开发新功能,代码写到一半没写完,不想提交脏代码,但需要临时切分支、拉代码、修bug,这时候用stash临时保存当前改动。常用命令:-gitstash:临时保存当前所有工作区、暂存区修改,恢复工作区为干净状态-gitstashsave"备注信息":带备注保存,方便后续区分-gitstashlist:查看所有暂存记录-gitstashpop:取出最新的暂存并删除记录(最常用)-gitstashapply:取出暂存但不删除记录-gitstashdrop:删除指定暂存记录避坑:stash只保存已追踪文件,新增的未track文件需要先gitadd或者加参数保存。5、gitreset和gitrevert区别?工作中怎么选?参考答案:核心区别:reset删版本,revert补版本,前者危险,后者安全1.gitreset:直接回退到指定版本,删除后续所有commit记录,会改写历史版本。三种模式:-soft:回退commit,改动保留在暂存区-mixed(默认):回退commit,改动保留在工作区-hard:彻底回退,清空所有改动,数据会丢失2.gitrevert:新增一个反向commit,抵消之前的错误提交,不删除任何历史记录,版本线是完整的。工作规范:-仅自己本地的错误提交:用reset,干净省事-已经push到远程、多人协作的分支:必须用revert,防止团队其他人版本冲突、历史混乱6、gitmerge和gitrebase的区别?各自适用场景?参考答案:1.gitmerge:将两个分支的代码合并,会生成一个新的合并commit,保留所有分支提交记录,版本树有分叉,逻辑清晰但提交记录杂乱。适用场景:公共分支、发布分支,比如develop、main,保留完整合并记录,方便追溯问题。2.gitrebase:变基操作,把当前分支所有提交,平移到目标分支最新版本顶部,不会产生新的合并commit,版本线是一条直线,干净整洁。适用场景:个人开发分支,功能开发完同步主干代码,整理提交记录,避免大量分叉。工作准则:公共分支绝对不要rebase,个人私有分支随便rebase。三、冲突解决(面试重点、工作刚需)7、Git冲突产生的原因?怎么解决?参考答案:产生原因:同一文件的同一行,两个分支做了不同修改,Git无法自动判断保留哪份代码,就会报冲突。常见于多人改同一文件、同步主干代码、合并分支场景。解决步骤:1.执行merge或rebase后提示冲突,打开冲突文件2.识别冲突标记:<<<<HEAD是当前分支代码,=======分隔,>>>>是待合并分支代码3.手动删除冲突标记,保留正确代码,按需合并两边修改4.保存文件,gitadd标记冲突解决5.merge场景直接commit;rebase场景执行gitrebase--continue小技巧:冲突优先保留主干代码,自己的新功能按需叠加,避免改崩原有逻辑。8、rebase过程中遇到冲突怎么办?可以中途放弃吗?参考答案:可以中途放弃,非常实用。1.冲突解决:改完冲突代码、保存、gitadd,然后gitrebase--continue继续变基,直到全部完成2.放弃变基:如果冲突太多、改崩了,直接gitrebase--abort,恢复到变基前的状态,无任何副作用注意:rebase是逐个commit变基,可能多次冲突,耐心逐个解决即可。四、分支管理规范(团队协作面试题)9、说说你日常的Git分支开发流程?参考答案:我日常遵循公司通用的GitFlow简化流程,适配迭代开发:1.主干分支:main(线上稳定代码,只合并上线代码,禁止直接提交)2.开发分支:develop(日常迭代分支,所有功能合并到这里)3.个人功能分支:从develop拉feature/xxx分支,单人开发使用4.缺陷分支:bugfix/xxx,用于修复测试、线上bug完整流程:1.开发前先切develop,gitpull拉最新代码,保证本地是最新版本2.新建个人功能分支开发,频繁小粒度commit,备注清晰3.开发完成后,先rebase同步develop最新代码,本地解决所有冲突4.提交远程分支,提MR/PR,代码评审通过后合并到develop5.上线前从develop拉release分支测试,测试无误后合并到main和develop6.线上bug从main拉bugfix分支,修复后合并回main和develop10、为什么不允许直接在main/develop分支提交代码?参考答案:1.主干分支要保证代码稳定,直接提交容易写错代码、引入bug,影响所有人开发和线上环境2.多人协作会频繁冲突,版本混乱,无法迭代开发3.没有代码评审,代码质量无法把控,遗留技术债务4.后续回滚、追溯版本极其困难,线上出问题无法快速定位问题提交五、高频故障排查与场景题(进阶面试)11、提交代码后发现写错了,想修改上一次的commit信息怎么做?参考答案:仅修改最新一次commit,本地未push:gitcommit--amend会进入编辑界面,直接修改备注,保存即可,不会新增版本,直接覆盖上一次commit。如果已经push远程,不建议amend,会导致版本不一致,需要强制推送,影响团队,优先用新commit修正。12、误删代码、误提交错误文件,怎么恢复?参考答案:分两种场景:1.只是本地工作区删了代码,没commit:gitcheckout--.恢复所有工作区修改2.已经错误commit,需要恢复文件:-先gitlog查看正确的历史commit哈希-gitcheckout哈希值--文件名,单独恢复某个文件3.彻底回退错误版本:本地用reset,远程已推送用revert13、gitpull和gitfetch的区别?参考答案:1.gitfetch:只拉取远程最新版本到本地远程镜像,不修改本地代码,安全无风险,可以查看远程更新内容,再决定是否合并。2.gitpull=gitfetch+gitmerge,拉完远程代码直接合并到本地当前分支,会直接修改本地代码,容易突然产生冲突。工作建议:优先用fetch,确认远程更新没问题再手动合并,更稳;日常简单迭代可以直接pull。14、为什么有时候gitpush推送失败?怎么解决?参考答案:最核心原因:本地版本落后于远程版本,远程有别人新提交的代码,Git禁止覆盖远程更新。解决步骤:1.先gitpull拉取远程最新代码,解决冲突2.本地代码稳定后,再次gitpush特殊情况:自己私有分支、确定远程代码都是自己的、无他人修改,可强制推送gitpush-f,但公共分支绝对禁止强制推送。六、加分进阶题(中高级开发面试)15、说说gitcherry-pick的作用和使用场景?参考答案:作用:选择性复制某一个或某几个指定commit,到当前分支,不是合并整个分支,是精准搬运版本。适用场景:1.开发分支多个功能,只需要上线其中一个功能,单独搬运对应commit到主干2.线上紧急bug修复,在测试分支修复完,精准pick修复commit到线上分支注意:pick多次commit要注意顺序,避免依赖缺失导致代码报错,冲突需要逐个解决。16、Git如何忽略已经提交过的文件?参考答案:.gitignore只能忽略未提交的新文件,如果文件已经提交过,后续改.gitignore不生效,需要手动清除缓存。操作命令:1.清除单个文件缓存:gitrm--cached文件名2.清除所有文件缓存:gitrm-r--cached.3.重新add、commit,后续该文件就会被忽略常
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年吉林交通职业技术学院单招职业技能测试题库及答案参考
- 2026年监理工程师目标控制土建考试真题及答案
- 2026年结核病防治业务培训试题有答案
- 2026年临床执业医师《儿科》真题及答案解析
- 2026年内科医师定期考核试题库150道含答案【新】
- 2026年农村宅基地管理政策培训试题及答案
- 2026年人工智能应用期末测试模拟试卷
- 2026年校招:正泰集团试题及答案
- 2026年校招:中国海洋石油集团面试题及答案
- 出版试题及答案
- 军史展室建设方案
- 2026年中考语文真题文言文汇编56份(分师生版)
- 江苏银行2027届校园招聘笔试参考题库及答案详解
- 中央空调工艺考核制度
- 江西省职业技能等级认定个人申报表、承诺书、职业技能等级认定档案材料清单
- 健身房会员合同样本
- DB13∕T 6056-2025 涉路工程技术评价规范
- 2025年及未来5年市场数据中国硫氰酸铵市场运行态势及行业发展前景预测报告
- 板框压滤机工艺培训
- 2025年法务专业知识试题及答案
- 乳品评鉴师技能竞赛理论考试题库500题(含答案)
评论
0/150
提交评论