2019 DevOps 必备面试题——代码版本控制篇

  • 时间:
  • 浏览:2
  • 来源:大发快3官方—UU快三

接下来你需要通过另另另2个示例定义 Git rebase 时间窗,以显示如可在合并过后使用它来正确处理型态分支中的冲突。因此 从 master 创建了另另另2个型态分支,没有 master 因此 收到了新的提交,Git rebase 可用于将型态分支移动到 master 分支的顶部。

你的回答也都可不都能能含有以下内容,人太好它是全版可选的,但促使给面试官留下深刻的印象:

输出还将含有有些额外信息,都可不都能能通过以下另另另2个标志轻松再加:

git diff-tree -no-commit-id -name-only -r {hash}

你应该首先说 Git rebase 是另另另2个命令,它将另另另2个 分支合并到当前你正在工作的分支中,并将所有位于另一分支过后的本地提交,移到该当前工作分支历史记录顶部。

接下来解释如可实现这名 点,这都可不都能能通过与存储库的预提交钩子相关的简单脚另另另2个 完成。即使在你需要输入提交消息过后,也会在提交过后触发预提交挂钩。在此脚本中,都可不都能能运行其它工具,累似 于 linters,并对提交到存储库中的更改执行全版性检查。

版本控制的优点:

此脚本会检查即将提交的所有 .go 文件否是通过标准 Go 源码格式化工具 —— gofmt 的检验。当检查未通过时,通过以非零情形退出,脚本能有效地阻止该提交应用于存储库。

我建议你通过解释 Git 的体系型态来解答这名 大疑问,如下图所示。我就参考下面给出的解释:

以下是有些基本的 Git 命令:

git commit

这里 -no-commit-id 将禁止提交哈希值再次出现在输出中,而 -name-only 只会打印文件名而一定会 它们的路径。

这名 大疑问用来测试你的分支经验,统统告诉亲们你在过后的工作中如可使用分支以及它的用途是有哪些,我就参考以下几点:

我就提到你另另另2个 使用的 VCS 工具:“我使用过 Git,它对比 SVN 等有些 VCS 工具的另另另2个主要优势在于,它是另另另2个分布式版本控制系统。” 

对于这名 大疑问,不应该仅仅只解释这名 命令是有哪些,而应该解释这名 命令究竟会做有哪些。统统我就没有说,为了获得在特定提交中更改的文件列表使用命令:

git diff-tree -r {hash} 

将 N 个提交压缩到单个提交含有并否是选用。在你的答案中包括以下另另另2个选项:

最后告诉亲们分支策略因组织而异,统统我知道基本的分支操作:如删除,合并,检出分支等。

原文地址:https://medium.com/edureka/devops-interview-questions-e91a4e6ecbf3

原文作者:Saurabh Kulshrestha

翻译君:CODING 戴维奥普斯

分布式 VCS 工具不一定依靠中央服务器来存储项目文件的所有版本。相反,每个开发人员都“克隆技术”存储库的副本,并在买车人的硬盘上拥有项目的全版历史记录。

这因此 你没得在面试中遇到的最简单的大疑问。我的建议是首先给出版本控制的定义:它是另另另2个记录文件变化的系统,以便你过后都可不都能能调用特定版本的文件。版本控制系统由另另另2个中央共享存储库组成,队友都可不都能能在其中提交文件的更改,接下来我就提到版本控制的用途。版本控制允许你:

最后给出另另另2个例子,我就参考下面的脚本:

git commit -edit -m “$(git log -format =%B -reverse .HEAD @ {N})”

我建议你先给出另另另2个 Git bisect 的小定义——Git bisect 用于通过二进制搜索算法来查找引入 bug 的提交。Git bisect 的命令是:

git bisect <子命令>

每次存储库接收到开发者 push 的新提交时,有并否是妙招都可不都能能配置脚本运行,需要根据触发脚本的时间来定义 pre-receive、update、因此 post-receive 脚本。

接下来需要解释一下这名 命令都可不都能能做有哪些,这名 命令使用二进制搜索算法来查找项目历史中哪个提交引入了另另另2个 bug。首先你需要告诉它另另另2个已知的含有了该 bug 的提交和在另另另2个已知的引入 bug 过后的提交。因此 Git bisect 在这另另另2个时间点之间选用另另另2个提交,并询我统统我知道所选的提交是“好”还是“坏”,过后它继续缩小范围,直到找到引入 bug 的确切提交。

我建议你提到以下命令:

git branch -merged 列出已合并到当前分支的分支。

git branch -no-merged 列出了尚未合并的分支。

钩子是每个 Git 存储库的本地存储,因此 没有版本化。脚本都可不都能能在“.git”目录内的 hooks 目录中创建,也都可不都能能在别处创建,因此 都可不都能能在目录放上去置有有哪些脚本的链接。

该命令有效地在 master 的顶部重放型态分支中所做的更改,并允许在该过程中正确处理冲突。完成后,型态分支会相对容易地合并到 master 中,有一定会被作为简单的快进操作。

此大疑问能否是另另另2个答案,根据具体情形都可不都能能使用以下任意选项:

给定提交哈希值,这名 命令将列出在该提交中更改或再加的所有文件。-r 标志会让命令列出各个文件,而一定会 仅将它们折叠到根目录名称中。

我建议你先简要介绍一下合理性检查。合理性或冒烟测试都可不都能能用来选用否是进行后续测试的合理性和必要性。