2019 DevOpsチーム不可欠なインタビューの質問 - コードのバージョン管理論文

オリジナル住所ます。https://medium.com/edureka/devops-interview-questions-e91a4e6ecbf3
原作者:Saurabh Kulshresthaは
6月翻訳:コーディングを戴维奥普斯

Q1:バージョン管理とは何ですか?

これはおそらく、あなたがインタビューの中で遭遇する最も簡単な問題です。私のアドバイスは、最初のバージョンコントロールの定義を与えることです:それはあなたがそれ以降のファイルの特定のバージョンを呼び出すことができるように記録されたシステムファイルの変更です。バージョン管理システムを構成中央共有リポジトリで構成され、彼のチームメイトは、バージョン管理の使用を挙げることができるファイルに変更を提出することができます。バージョン管理はあなたをすることができます:

  • 以前の状態にファイルを復元するには。
  • プロジェクト全体を以前の状態に戻ります。
  • 経時変化の比較。
  • 問題を引き起こす可能性があり、最後の変更を表示します。
  • 問題を導入する場合。

Q2:バージョンコントロールを使用することの利点は何ですか?

バージョン管理の利点:

  1. バージョン管理システム(VCS)を使用し、すべてのチームメンバーは、任意の文書でいつでも自由に作業することができます。VCSを使用すると、一般的なバージョンに対するすべての変更をマージすることができます。
  2. すべての過去のバージョンとバリエーションがきちんとVCSにパッケージされています。あなたがそれを必要とするとき、あなたは常にすべてのバージョンを要求することができ、プロジェクトの完全なスナップショットを取得します。
  3. あなたがプロジェクトの新しいバージョンを保存するたびに、VCSは、コンテンツの変更の簡単な説明を提供する必要があります。また、あなたはまた、ファイルの内容の変更の正確な内容を表示することができます。これは、あなたがどのようなプロジェクトに変更を加えたかを知ることができます。
  4. Gitのと同じようにVCSは、すべてのチームメンバーは、プロジェクトの完全な履歴を持つことができ、分散するので、中央のサーバーに障害が発生した場合、あなたはどのチームメンバーのコードベースを回復するために、ローカルのGitリポジトリを使用することができます。

Q3:使用説明分岐戦略

この質問は、あなたのブランチの経験をテストするので、あなたは、以前の仕事で使用され、その目的はブランチに何であるか、あなたは以下を参照することができますどのようにそれらを伝えるために使用されます。

  • 機能ブランチ
    機能ブランチモデル内のすべての変更は、特定の機能を分岐維持しています。場合は、新機能の包括的なテストと検証を通じて、ブランチはmasterブランチにマージされます。
  • タスクブランチ
    このモデルでは、自分の支店に達成するための各タスクは、分岐タスクキーワードが名前に含まれています。ただ、ブランチの名前のキーワードを探して、あなたは簡単にタスクを実装するどのコードを見ることができます。
  • ブランチを投稿
    開発ブランチは、十分な特性を得るために発行されると、あなたはリリースブランチを形成するために、枝のクローンを作成することができます。このブランチを作成すると、リリースサイクルを開始しますので、この後に任意の新しい機能を追加することはできません、バグフィックスだけ、およびタスクのために満たされた他の公開文書は、このブランチに含めることができます。リリースの準備ができたら、このバージョンでは、マスタにマージとバージョン番号をマークされます。また、以降のリリースブランチは既に新しいコードの更新を開発している可能性があり、それはまだ戻って開発ブランチにマージされるべきです。

DELETEなど、マージ、およびその検出ブランチ:彼らは最終的に、組織全体で変わるので、私は基本的な分岐動作を知っている分岐の戦略を語りました。

Q4:VCSツールは、あなたが精通していますか?

あなたが今まで使用してきたVCSツールを挙げることができる:「私が使用Gitは、SVNや他のVCSが、それは大きな利点は、それが分散型バージョン管理システムであるということであることを意味し比較します。」 

ツールのすべてのバージョンは必ずしもプロジェクトファイルを保存するために、中央サーバに依存しないVCSを配布しました。代わりに、各開発者は、「クローン」リポジトリのコピー、およびハードドライブ上のプロジェクトの完全な履歴ます。

Q5:Gitは何ですか?

私はGitののアーキテクチャを説明することにより、以下に示すように、あなたは、この質問に答えることを示唆しています。あなたは以下の説明を参照することができます。

  • Gitは分散型バージョン管理システム(DVCS)で、それはファイルの変更を追跡することができますし、任意の特定の変更を回復することができます。
  • SVNや他のバージョン管理システムと比較して、その分散型アーキテクチャが大きな利点は、それがすべてのバージョンのプロジェクトファイルを保存するために、中央のサーバに依存していないということです、多くの利点を持っています。代わりに、各開発者「クローン」私は以下の図は、リポジトリの「ローカルリポジトリ」のコピーを示し、そのハードドライブ上のアイテムの完全な履歴を持っているあなたのAからサーバーの中断が発生した場合、中にいるのであなたが必要とするすべてのリポジトリのチームメイトが回復ローカルGitのです。
  • 中央のクラウドレポジトリもあり、開発者は変更を送信し、他のチームメンバーと共有することができます。示されているように、全ての協力者は、に変更を提出する「リモートリポジトリ。」

絵

Q6:いくつかの基本的なGitのコマンドを説明しますか?

ここではいくつかの基本的なGitのコマンドは次のとおりです。

絵

Q7:Gitのでは、どのように国民が押され、提出された復元するには?

この問題は、状況に応じて次のオプションのいずれかを使用することができ、2つの答えを持つことができます。

  • 削除するか、新しいサブミッションでエラーファイルを修正し、リモートリポジトリにプッシュ。これは、エラーを修正するための最も自然な方法です。リモートリポジトリに提出し、ファイルに必要な変更を行った後、私が使用します。
    -mをコミットgitの「メッセージをコミット」
  • 新しい投稿を作成し、日付で行ったすべての変更を元に戻す、次のコマンドを使用します。
    Gitの元に戻します

Q8:どのようにN倍の提出に圧縮し送信しますか?

Nには2つのオプションがあり、単一の提出に圧縮された提出しました。それはあなたの答えでは、次の2つのオプションが含まれています。

  • あなたがゼロから新しいメッセージを書き提出したい場合は、次のコマンドを使用します。
    RESET -soft HEAD〜N &&は、GIT 
    コミットをgitの
  • あなたは新しい提出し、既存の編集情報を連結した情報を提出したい場合は、これらのメッセージを抽出するために必要とコミットGitリポジトリに渡されます。私が使用します。
    Gitは-soft HEADのRESET〜N && 
    Gitは"$(Gitリポジトリ=ログ%のB -format -reverse .HEAD @ {N})"コミット-mを-EDIT

Q9:Gitは二分何ですか?バグの原因を決定するためにそれを使用する方法?

私はあなたが--GitのGitの少し定義がバイナリサーチアルゴリズムの導入によって提出されたバグを見つけるために使用二分二分与える示唆しています。Gitは、コマンドを二分です:
Gitに二分<サブコマンド>

次は、このコマンドは何ができるかを説明する必要があります。このコマンドは、バグを紹介提出プロジェクトの歴史を見つけるために、バイナリサーチアルゴリズムを使用しています。まず第一に、あなたはそれを提出して、既知のバグを導入する前に既知のバグが含まれてい伝える必要があります。次に、Gitが提出を選択し、これらの2つの時点間の二等分し、あなたの選ばれた提出を依頼することは「良い」または「悪い」で、それはあなたが正確なバグを提出紹介見つけるまで狭めし続けています。

Q10:Gitはリベースは何ですか?それはどのように、合併前の競合特性枝を解決するのでしょうか?

あなたはまず、それはあなたが現在作業している別のブランチ、および現在の作業分岐履歴の先頭にすべて移行する前に、別の提出にあるローカルブランチに分岐します、Gitのリベースがコマンドであると言うべきです。

次は競合特性ブランチを解決するために、合併前にそれを使用する方法を示すために、例をリベースGitのことで時間ウィンドウを定義する必要があります。あなたはマスターから機能ブランチを作成する場合、マスターは新しい提出を受けた、Gitのリベース分岐特性は、マスターブランチの先頭に移動するために使用することができます。

このコマンドは、効果的にトップマスターの機能ブランチの変更を再生し、その過程で紛争を解決することができます。完了後、分岐特性は単に早送り動作として、マスタで比較的容易に組み込まれます。

Q11:ヘルスチェックツールを提出する前に、コードを実行するためにGitリポジトリを設定して、テストが失敗した場合に提出を停止する方法?

私はあなたの妥当性検査の概要を示唆しています。煙又は合理試験は、合理的かつ必要に応じてその後の試験かどうかを決定するために使用されてもよいです。

そして、これを実行する方法を説明し、これは単に前フックとリポジトリによって、関連するスクリプトを提出して行うことができます。あなたがコミットメッセージを入力する必要が前であっても、それが提出する前に、プリコミットフックをトリガーします。このスクリプトでは、あなたは、リンターなどの他のツールを、実行することができ、かつ整合性チェックを実行するためのリポジトリに変更を提出します。

最後に、たとえば、次のスクリプトを参照することができます:

#!/bin/sh
files=$(git diff -cached -name-only -diff-filter=ACM | grep '.go$')
if [ -z files ]; then
exit 0
fi
unfmtd=$(gofmt -l $files)
if [ -z unfmtd ]; then
exit 0
fi
echo "Some .go files are not fmt'd"
exit 1

gofmt検査 - このスクリプトを提出するすべての.GO文書は標準のGoのソースコードは、ツールをフォーマットするかどうかを確認します。チェックがゼロ以外の終了ステータスを通過しない場合は、スクリプトが効果的にリポジトリの提出を防ぐために適用することができます。

Q12:どのように私は特に、提出された書類のリストが変更されている見つけることができますか?

そのことについては、我々は唯一のもののみ、このコマンドを説明するべきではありませんが、このコマンドは何をするかを正確に説明する必要があります。だから、コマンドを使用して、特定の提出に変更されたファイルの一覧を取得するためには、それを言うことができます:
gitの差分ツリーハッシュ-rを{} 

ハッシュ値を提出考えると、このコマンドは、提出に変更または追加されたすべてのファイルが一覧表示されます。-rフラグは、単にルートディレクトリ名にそれらを折るのではなく、リストに各ファイルを指揮します。

あなたの答えは、それは完全に任意ですが、以下のものが挙げられるが、インタビュアーを感動させる手助けになります
:出力も簡単に次の二つのフラグによって除去することができるいくつかの追加情報が含まれています
diff-でのgitを-name- -noコミット-IDツリーのみ-r {ハッシュ}

ここで-no-コミット-idは、ハッシュ値を提出することが禁止されますが、出力に表示されますが、唯一-nameのみそのパスではなくファイル名を印刷します。

Q13:リポジトリは、特定のスクリプトを設定する方法新しいプッシュを、提出する受信されるたびに?

リポジトリが提出する新しいプッシュの開発者を受信するたびに、実行するスクリプトを設定するには3つの方法がありますが、あなたはタイム・トリガスクリプトに基づいて事前に受け取り、更新、またはポスト受け取るスクリプトを定義する必要があります。

  • 場合は、ターゲットリポジトリに提出する新しいプッシュは、事前に受信フックスクリプトのターゲットリポジトリを呼び出します。このフックにバインドされた任意のスクリプトは、任意の参照の実装前に更新されます。これは、便利なフックが開発戦略の実施に貢献スクリプトを実行するために使用することができます。
  • 作業の同様の前受けるフックのようにフックを更新し、実際にすべての更新の前にトリガされます。しかし、それぞれの提出の対象リポジトリにプッシュされているため、更新のフック後に呼び出されます。
  • 最後に、更新対象のリポジトリを受けた後、ポスト受けるフックリポジトリと呼ばれます。これは、簡単な構成の展開スクリプトで、継続的インテグレーションシステム、人々がリポジトリにメンテナンスなどのサービスの電子メール通知を送信するための理想的な場所を呼び出します。

各フックには、保存するローカルのGitリポジトリで、バージョン管理はありません。「.git」ディレクトリのhooksディレクトリが作成されたスクリプトでは、あなたが他の場所で作成することができますすることができ、これらのスクリプトへのリンクはディレクトリに配置することができます。

Q14:どのように私はブランチがメインブランチにマージされているかどうかを知っていますか?

私は、次のコマンドを言及勧め:
gitの支店-mergedリストは、現在のブランチのブランチにマージされています。
-no-マージされたリストの非法人の支店のgitブランチ。

おすすめ

転載: www.cnblogs.com/codingdevops/p/11447815.html