1.什么是Git?
我建议你先经过了解 git 的架构再来回答这个问题,以下图所示,试着解释一下这个图:算法
Git 是分布式版本控制系统(DVCS)。它能够跟踪文件的更改,并容许你恢复到任何特定版本的更改。
与 SVN 等其余版本控制系统(VCS)相比,其分布式架构具备许多优点,一个主要优势是它不依赖于中央服务器来存储项目文件的全部版本。
每一个开发人员均可以“克隆”我在图中用“Local repository”标注的存储库的副本,而且在他的硬盘驱动器上具备项目的完整历史记录,所以当服务器中断时,你须要的全部恢复数据都在你队友的本地 Git 存储库中。
还有一个中央云存储库,开发人员能够向其提交更改,并与其余团队成员进行共享,如图所示,全部协做者都在提交更改“远程存储库”。
2. 在 Git 中提交的命令是什么?
答案很是简单。
用于写入提交的命令是 git commit -a。bash
如今解释一下 -a 标志, 经过在命令行上加 -a 指示 git 提交已修改的全部被跟踪文件的新内容。还要提一下,若是你是第一次须要提交新文件,能够在在 git commit -a 以前先 git add 。服务器
3.什么是 Git 中的“裸存储库”?
你应该说明 “工做目录” 和 “裸存储库” 之间的区别。微信
Git 中的 “裸” 存储库只包含版本控制信息而没有工做文件(没有工做树),而且它不包含特殊的 .git 子目录。相反,它直接在主目录自己包含 .git 子目录中的全部内容,其中工做目录包括:多线程
一个 .git 子目录,其中包含你的仓库全部相关的 Git 修订历史记录。
工做树,或签出的项目文件的副本。
4.Git 是用什么语言编写的?
你须要说明使用它的缘由,而不只仅是说出语言的名称。我建议你这样回答:
Git使用 C 语言编写。 GIT 很快,C 语言经过减小运行时的开销来作到这一点。
5.在Git中,你如何还原已经 push 并公开的提交?
There can be two answers to this question and make sure that you include both because any of the below options can be used depending on the situation: 1
这个问题能够有两个答案,你回答时也要保包含这两个答案,由于根据具体状况可使用如下选项:
删除或修复新提交中的错误文件,并将其推送到远程存储库。这是修复错误的最天然方式。对文件进行必要的修改后,将其提交到我将使用的远程存储库
git commit -m "commit message"
建立一个新的提交,撤消在错误提交中所作的全部更改。可使用命令:
git revert <name of bad commit>
6. git pull 和 git fetch 有什么区别?
git pull 命令从中央存储库中提取特定分支的新更改或提交,并更新本地存储库中的目标分支。
git fetch 也用于相同的目的,但它的工做方式略有不一样。当你执行 git fetch 时,它会从所需的分支中提取全部新提交,并将其存储在本地存储库中的新分支中。若是要在目标分支中反映这些更改,必须在 git fetch 以后执行git merge。只有在对目标分支和获取的分支进行合并后才会更新目标分支。为了方便起见,请记住如下等式:
git pull = git fetch + git merge
7.git中的“staging area”或“index”是什么?
For this answer try to explain the below diagram as you can see:
能够经过下图进行解释:
在完成提交以前,能够在称为“staging area”或“index”的中间区域中对其进行格式化和审查。从图中能够看出,每一个更改首先在暂存区域中进行验证,我将其称为“stage file”,而后将更改提交到存储库。
8.什么是 git stash?
首先应该解释 git stash 的必要性。
一般状况下,当你一直在处理项目的某一部分时,若是你想要在某个时候切换分支去处理其余事情,事情会处于混乱的状态。问题是,你不想把完成了一半的工做的提交,以便你之后就能够回到当前的工做。解决这个问题的答案是 git stash。
再解释什么是git stash。
stash 会将你的工做目录,即修改后的跟踪文件和暂存的更改保存在一堆未完成的更改中,你能够随时从新应用这些更改。
9.什么是git stash drop?
经过说明咱们使用 git stash drop 的目的来回答这个问题。
git stash drop 命令用于删除隐藏的项目。默认状况下,它将删除最后添加的存储项,若是提供参数的话,它还能够删除特定项。
下面举个例子。
若是要从隐藏项目列表中删除特定的存储项目,可使用如下命令:
git stash list:它将显示隐藏项目列表,如:
stash@{0}: WIP on master: 049d078 added the index file
stash@{1}: WIP on master: c264051 Revert “added file_size”
stash@{2}: WIP on master: 21d80a5 added number to log
若是要删除名为 stash@{0} 的项目,请使用命令 git stash drop stash@{0}。
以上就是“2023年git分支管理面试题的相关资料”,你能回答上来吗?如果想要了解更多的Java面试题相关内容,可以关注动力节点Java官网。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习