2022年に知っておく必要のあるGitインタビューの質問と回答のトップ30

公開: 2021-01-04

Gitの人気が高まっています。 開発者は、バグを修正したり、その機能を改善したりするために、ベータ版以外のアプリの新しいバージョンのリリースに向けて継続的に取り組んでいます。 Gitは、すべての変更が1つの中央リポジトリに保存されるバージョン管理として機能します。

チーム内のすべての開発者は、バージョンを表示し、変更を加えてから、アップロードすることができます。 また、リモートチームで作業している人や自宅で作業している人にも非常に効果的です。 Gitは開発者だけが使用するのではありません。 チーム内の開発者以外でも、これを使用してアプリの最新バージョンまたは特定のバージョンを取得し、テストやその他の作業に使用できます。

Gitがコマンドラインツールであるのに対し、Git Hubは、プログラマーがプロジェクトを保存してチームと通信するための中心です。

このように、Gitの知識を持つことが求められており、需要の増加に伴い、私たちはあなたが仕事を確保するのに役立つ一連のGit面接質問を作成しました。 理解しやすくするために、GitHubの面接の質問を、初級、中級、上級の3つのセクションに分けます。

目次

基本レベルのGitインタビューの質問

Q.1)SVNとGitの違いを説明してください

  • SVNは、第3世代に属する分散型バージョン管理ツールであるGitとは対照的に、第2世代に属する集中型バージョン管理ツールです。
  • SVNでは、サーバー側のリポジトリがバージョン履歴を保存します。 Gitでは、リポジトリ全体をPCにコピーできます。
  • SVNでは、オフラインでもコミットできるGitとは異なり、オンラインでのみコミットできます。
  • プルとプッシュの操作は、Gitの方が速いのに比べてSVNの方が遅くなります。
  • SVNでは、自動的に共有するGitとは異なり、共有するまで作業は共有されません。

Q.2)Gitとは何ですか?

Gitを使用すると、開発者とチームのメンバーは、誰が行った変更も追跡できます。 また、古いバージョンに戻ることもできます。 これは、チームが誰がどの日時に変更を加えたかを知るのに役立つ分散バージョン管理システムです。 他のバージョン管理システムに比べて、独自の利点があります。

Gitの最大の利点は、プロジェクトのすべてのバージョンを保存するために中央サーバーに依存しないことです。 開発者は、自分のシステム上にリポジトリのクローン(コピー)を作成できます。これにより、履歴全体が表示されます。 これは、重大な停止が発生した場合に特に役立ちます。 Gitには、プログラマーやチームメンバーが変更をコミットしてチームと共有できる中央のクラウドリポジトリがあります。

Q.3)GitHubとGitの違いは何ですか?

GitリポジトリホスティングサービスはGitHubと呼ばれます。 さらに、Webベースのグラフィカルインターフェイスを提供するなど、独自の機能を備えています。 さらに、GitHubは、プロジェクトの管理ツールとして機能するだけでなく、アクセスも提供します。

一方、Gitは分散型のバージョン管理システムです。 これは主に、ベータ版以外のアプリで行われた変更を追跡するために使用されます。 速度、サポート、およびデータの整合性を提供します。 開発者や他のチームメンバーは、誰がどの日付にどのような変更を加えたかを確認できます。

Q.4)バージョン管理システムを使用する利点は何ですか?

バージョン管理システムにより、面倒なことなく共通バージョンで行った変更をマージできる柔軟性が得られるため、チームとそのメンバーはいつでも作業できます。

履歴にはすべての古いバージョンとそのバリアントが表示され、チームメンバーは必要に応じて元に戻すことができます。 チームメンバーは、プロジェクト全体のスナップショットも持っています。

チームメンバーは、変更を加えるときにコメントする必要があります。これは、他の人がプロジェクトをより組織化するための正確な変更を理解するのに役立ちます。 説明を待つ必要はありません。 チームメンバーは、誰がバージョンを変更したのか、そしてその理由を正確に知っています。

不幸なサーバーの停止が発生した場合、Gitのような分散VCSを使用すると、デスクトップにダウンロードできるため、プロジェクトの完全な履歴を取得できます。

Q.5)Gitではどの言語が使用されていますか?

Gitが使用する言語は「C」言語です。これは、他の高級言語とは異なり、実行時間が短縮されるため、GITが必要とする速度を「C」言語で満たすことができるためです。

Q.6)Gitリポジトリのホスティング機能をいくつか教えてください

  • Github
  • Gitlab
  • SourceForge
  • Bitbucket
  • GitEnterprise

Q.7)Gitにどのようにコミットしますか?

コミットメッセージを書くには、コマンド「gitcommit-a」を書く必要があります。

コマンドラインの-aは、変更されたすべての追跡ファイルの最新コンテンツをコミットするようにgitにコマンドします。 新しいファイルを初めてコミットする必要がある場合は、gitcommit-aの前にコマンド「gitadd<file>」を使用できます。

Q.8)壊れたコミットをどのように修正できますか?

コマンド「gitcommit–amend」を使用して、壊れたコミットを修正できます。 このコマンドを実行することにより、エディター内の壊れたコミットメッセージを修正します。

読む: Nagiosのインタビューに関する上位の質問

Q.9)Gitでリポジトリとはどういう意味ですか?

Gitがすべてのファイルを保存する場所です。 Gitには、リモートリポジトリとローカルリポジトリの両方にファイルを保存する機能があります。

Q.10)リポジトリを作成するにはどうすればよいですか?

リポジトリの作成はGitで簡単です。 まだ作成していない場合は、プロジェクトのディレクトリを作成する必要があります。 次に、コマンド「gitinit」を実行する必要があります。 このコマンドは、プロジェクトディレクトリにgitディレクトリを作成します。

Q.11)Gitの「ベアリポジトリ」について説明してください。

ベアGitリポジトリは通常、チームメンバーや他の人と共有するリモートリポジトリとして使用されます。 リモートリポジトリ内で行われる作業がないため、その中に作業ツリーはありません。 他のファイルでは、この中に編集するファイルはありません。 逆に、作業ディレクトリには、すべてのバージョン履歴と作業ツリーを含む.gitサブディレクトリが含まれています。

Q.12)gitの「競合」とはどういう意味ですか?

通常、Gitは自動マージ機能を使用してすべてのマージを管理します。 ただし、2つの別々のブランチがファイルのまったく同じ行で編集を取得した場合、競合が発生する可能性があります。 また、あるブランチからファイルが削除されたが、別のブランチで編集された場合にも発生する可能性があります。 これらは、チーム環境で作業しているときに必ず発生します。

Q.13)git is-treeとは何ですか?

'git is-tree'は、モードとアイテム名、およびツリーまたはブロブのSHA-1値で構成されるツリーオブジェクトを表します。

中級レベルのGitインタビューの質問

Q. 14)Gitで競合が発生した場合、どのように解決しますか?

Gitの競合は、次の方法で解決できます。

  1. 競合が発生した原因となったファイルを特定します。
  2. その特定のファイルに変更を加えることにより、競合を解決します。
  3. コマンドgitaddを使用して、これらのファイルを再度追加します。
  4. コマンドgitcommitを使用して、ファイルをコミットします。

Q.15)コミットがすでにプッシュされて公開されている場合、Gitでどのように元に戻しますか?

状況に応じて、これを行うことができる2つの方法があります。

  1. それを完全に削除するか、新しいコミットで不良ファイルを修正してから、リモートリポジトリにプッシュバックすることができます。 これは、この問題を修正するために最も一般的に使用される方法です。 ファイルに関連する変更を加えた後、コマンドgit commit -m“ commit message”を使用して、ファイルをリモートリポジトリにコミットします。
  2. または、不正なコミットで行われたすべての変更を元に戻す新しいコミットを作成することもできます。 これを行うには、コマンドgitrevert<不正なコミットの名前>を使用します。

読む:アジャイルインタビューの質問と回答

Q.16)SubGitとは何ですか?

これは、SVNからFitへの移行を可能にするツールです。 ローカルまたはリモートのSubversionリポジトリの書き込み可能なGitミラーを作成し、SubversionとGitの両方を好きなだけ利用します。 SubGitを使用して、既存のSubversionリポジトリの双方向Git-SVNミラーを作成できます。 SubversionからGitへのワンタイムインポートをすばやく実行することもできます。

Q.17)gitpullコマンドとgitfetchコマンドの違いは何ですか?

Git pullコマンドは、中央リポジトリの正確なブランチからすべての新しい変更またはコミットを取得し、ローカルリポジトリの宛先ブランチを更新します。

Git fetchコマンドは似たようなものに使用されますが、わずかな違いがあります。 フェッチすると、正確なブランチからすべての新しいコミットが取得され、ローカルリポジトリの新しいブランチに保存されます。 これらの変更を宛先ブランチに反映させたい場合は、gitmergeを呼び出す必要があります。

したがって、Git pull = git fetch +gitmerge。

Q.18)Gitの「インデックス」または「ステージングエリア」とは何ですか?

コミットする前に変更をフォーマットまたはレビューできる中間領域は、Gitではインデックスまたはステージング領域と呼ばれます。

Q.19)git stashとは何ですか? どのように適用しますか?

他のブランチで優先的に作業する必要があるため、作業を一時停止する必要がある場合があります。 中途半端な作業は完全な段階ではないためコミットできませんが、短時間で戻って作業したいと思います。 この問題を解決するには、gitslashがヘルプを提供します。

未完成の変更のスタックに保存され、後で完了してコミットできます。 この作業に戻るには、gitstashを呼び出してコマンドを適用するだけです。 それはあなたがそれを残したところからあなたの仕事をあなたの作業ディレクトリにフェッチします。

Q. 20)gitdiffは「gitstatus」とどう違うのですか?

「gitdiff」は「gitstatus」とほぼ同じです。 両方の違いは、前者がさまざまなコミット間の違いを明らかにすることだけです。 '

Q.21)「gitremote」は「gitclone」とどう違うのですか?

特定のURLの名前を指定するエントリをgitconfigに作成する場合は、「gitremoteadd」を使用します。 一方、「git clone」は、URLにある既存のリポジトリをコピーして新しいgitリポジトリを作成します。

読む: TopReactインタビューの質問と回答

Q.22)分岐戦略について説明してください

すべての企業には独自のブランチ戦略があります。 人気のあるもののいくつかを次に示します。

  • 機能の分岐–機能の分岐モデルは、分岐内の特定の機能に対して行われたすべての変更を保存します。 徹底的なテストの後でのみ、このブランチはそのマスターとマージされます。
  • リリースブランチ–開発ブランチがリリースの準備ができた時点に達したら。 クローンまたはコピーして、リリースブランチを形成できます。 クローン作成後、新しい機能は追加されません。 バグを修正したり、文書化したり、リリースの改善に関連するアクティビティを実行したりすることしかできません。 テストされると、マスターとマージされ、バージョン番号が取得されます。 さらに、開発ブランチにマージして戻す必要があります。開発ブランチは、リリースが行われてから先に進んでいる可能性があります。
  • タスクの分岐–このモデルでは、各タスクは、ブランチ名に保持されているタスクキーを使用して、個々のブランチで実行されます。 ブランチ名のタスクキーを探すことで、どのコードがどのタスクを実行するかを確認できます。

Q.23)Gitflowワークフローについて説明してください。

Gitflowは、マスターで開発された2つの長期実行並列ブランチを使用することにより、特定のプロジェクトの履歴を保存します。

  • マスター–これはブランチに行く準備ができています。 このブランチではすべてがテストされ、承認されています。
  • 修正プログラム–これらのブランチは、製品リリースにすばやくパッチを適用するために使用されます。 それらは、機能ブランチやリリースブランチとほとんど同じです。 その上、それらは開発ではなくマスターに基づいています。
  • 開発–すべての機能ブランチがこのブランチにマージされます。 これらはテストを受けているものです。 厳密なテストの後でのみ、マスターブランチとマージされます。
  • 機能–新しい機能はそれぞれ独自のブランチに配置する必要があり、そのブランチは親ブランチである開発ブランチにプッシュされます。

Q. 24)ブランチがマスターにマージされているかどうかをどのように判断しますか?

次のコマンドは、それらがマージされているかどうかを知るのに役立ちます。

git branch –merged –現在のブランチにマージされたすべてのブランチを一覧表示します。 次に、それがそうであるかどうかを確認できます。

git branch –no-merged –または、このコマンドを使用して、マスターブランチとマージされていないすべてのブランチをチェックすることもできます。

Q.25)ファイルシステムからファイルを削除せずにgitからファイルを削除するにはどうすればよいですか?

間違ったファイルを追加してしまうことがないように、Gitにファイルを追加するときは注意が必要です。 コマンドgitrmは、ステージング領域とファイルシステムの両方からそれを削除するため、代わりにgitresetコマンドを使用する必要があります。

gitresetfilenameまたはechofilename>>.gitingoreを使用できます

Q.26)Gitでのリベースとマージについて説明してください。

rebaseコマンドを使用して、あるブランチから別のブランチに編集を統合します。 マージコマンドの代わりに使用されます。 これは、「マージ」コマンドの代替手段です。 マージとは異なり、コミット履歴を書き換えて、まっすぐに配置された一連のコミットを提供します。

上級レベルのGitインタビューの質問:

Q.27)最後のN個のコミットを1つのコミットにどのように押しつぶしますか?

最後のN個のコミットを1つのコミットに押しつぶすには、次の2つの方法があります。

最初から新しいコミットメッセージを作成する場合は、次のコマンドを使用できます。

git reset –soft HEAD〜N && git commit

既存のコミットメッセージを連結して新しいコミットメッセージを単純に編集する場合は、次のコマンドを使用して、それらのメッセージをフェッチし、Gitcommitに渡す必要があります。

git reset –soft HEAD〜N && git commit –edit -m” $(git log –format =%B –reverse .HEAD @ {N} )”

Q.28)JenkinsをGitと統合するための手順は何ですか?

ステップ1:Jenkinsダッシュボードをクリックして、Jenkinsボタンを管理する必要があります。

ステップ2:プラグインの管理ボタンをクリックします。

ステップ3:プラグインページで、GITプラグインを選択する必要があります。 再起動せずにインストールをクリックします。 プラグインは、インターネットの速度に応じて自動的にダウンロードされます。

Q.29)Gitバイセクトとは何ですか?バグの原因を突き止めるためにどのように使用しますか?

Gitバイセクトを使用すると、バイナリ検索を使用して、どのコミットがバグを引き起こしたかを特定できます。 Gitbisectのコマンドはgitbisect<サブコマンド><オプション>です。

バイナリ検索アルゴリズムであるこのコマンドは、最初にバグの原因となったコミットを検出します。 Git bisectは、バグが発生した2つのエンドポイント間のコミットを選択します。 良いコミットと悪いコミットのどちらかを判断できます。 正確なコミットが見つかるまで、フィルタリングを続行します。

Q.30)git reflogについて説明してください?

'reflog'コマンドは、リポジトリの参照に対して行われたすべての編集を追跡するのに役立ちます。 ブランチのデータ履歴を保持し、ローカルまたは外部で作成されたブランチへのタグも保持します。

このコマンドは、ブランチが欠落しているリポジトリで実行する必要があります。 リモートリポジトリの状況の場合、ブランチを持っていたプログラマーのシステムでreflogコマンドを実行する必要があります。

世界のトップ大学からソフトウェアエンジニアリングの学位取得します。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

結論

Git Hubの面接の質問が、夢の仕事を得るのに役立つことを願っています。 これらは、インタビュアーが最もよく尋ねるGitの質問です。 インタビューにご期待ください。

未来のキャリアに備える

ソフトウェアエンジニアリングの修士号を今すぐ申し込む