Git 面试题及答案(实战导向版).docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Git面试题及答案(实战导向版)

一、基础操作题(考察日常使用熟练度)

问题:刚创建一个本地仓库,想把本地代码推送到远程新建的空仓库,完整步骤是什么?

答案:

本地初始化仓库:gitinit

添加所有文件到暂存区:gitadd.(或指定文件路径)

提交到本地仓库:gitcommit-m初始化项目:基础功能搭建(提交信息需具体)

关联远程仓库:gitremoteaddorigin远程仓库地址(如HTTPS/SSH链接)

首次推送指定分支:gitpush-uoriginmain(若远程默认分支是master则用master,-u绑定追踪关系)

问题:提交代码后发现漏加了一个文件,不想再写一次commit,怎么补充到上一次提交?

答案:先把漏加的文件加入暂存区gitadd漏加的文件路径,再执行gitcommit--amend,此时会进入提交信息编辑界面,可保留原信息或修改,保存后就会覆盖上一次提交(仅本地提交未推送时使用,已推送的提交不建议这么做,会破坏远程分支历史)。

问题:本地修改了代码,但临时需要切换到其他分支处理紧急问题,不想提交当前修改(未完成),该怎么办?

答案:用gitstash暂存当前工作区和暂存区的修改,此时工作区会回到干净状态,可切换分支处理问题;处理完后切回原分支,用gitstashpop恢复暂存的修改(会删除stash记录),或gitstashapply恢复(保留stash记录,适合多次恢复场景)。

二、核心原理题(考察底层逻辑理解)

问题:Git中的工作区、暂存区(index)、本地仓库(localrepo)、远程仓库(remoterepo)分别是什么?它们之间的交互流程是怎样的?

答案:

工作区:就是本地能看到的代码目录,正在编写/修改的文件所在位置;

暂存区:是Git的“缓存区域”,位于.git/index,用于临时存放要提交的文件变更,相当于“待提交清单”;

本地仓库:存储在.git目录下,包含所有提交记录、分支、标签等完整版本信息,是Git的核心;

远程仓库:远程服务器上的仓库(如GitHub、GitLab),用于团队协作共享代码。

交互流程:工作区修改→gitadd把变更存入暂存区→gitcommit把暂存区内容提交到本地仓库→gitpush把本地仓库的提交推送到远程仓库;反过来,gitpull是把远程仓库的变更拉取到本地仓库,再同步到工作区。

问题:Git的commit、branch、tag分别有什么作用?tag和branch的核心区别是什么?

答案:

commit:是Git的最小版本单元,每次提交会生成一个唯一的SHA-1哈希值,记录当前代码的完整状态(包括文件内容、作者、时间等),形成一条可追溯的历史记录;

branch:分支是提交记录的“平行线”,用于隔离不同开发任务(如功能开发、bug修复),默认分支是main/master,创建新分支后可独立开发,避免影响主分支;

tag:是对特定commit的“快照标记”,通常用于版本发布(如v1.0.0),代表一个稳定的、不可修改的版本节点。

核心区别:tag是静态的,标记后不会随代码变更移动;branch是动态的,会随着新的commit不断向前推进(比如在tag所在的commit创建分支后继续提交,分支会指向新的commit,而tag始终指向原commit)。

三、实战场景题(考察问题解决能力)

问题:在本地开发分支(dev)开发完功能后,想合并到主分支(main),但合并时提示冲突,该怎么处理?

答案:

先确保本地dev分支所有修改已提交:gitcheckoutdev→gitadd.→gitcommit-m完成XX功能开发;

切换到main分支并拉取最新远程代码(避免和远程冲突):gitcheckoutmain→gitpulloriginmain;

合并dev分支到main:gitmergedev,此时Git会提示冲突文件;

打开冲突文件,找到冲突标记(HEAD是当前分支内容,=======分隔,dev是待合并分支内容),根据业务逻辑修改文件,删除冲突标记,保留正确代码;

解决完所有冲突后,执行gitadd冲突文件路径→gitcommit-m合并dev分支:解决XX文件冲突(无需写提交信息,Git会自动生成合并提交信息);

最后推送main分支到远程:gitpushoriginmain。

问题:不小心提交了错误的代码到本地仓库(还没推送),想回退到上一个正

文档评论(0)

151****9429 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档