WEB問題集
ソフトウェア開発で使われる Git と GitHub の関係を説明したものとして、正しいものはどれですか。
解説
【正解: B】の理由
Git はファイルへの変更を追跡するバージョン管理システムで、プロジェクトの独自のコピーで作業し、変更履歴を記録し、作業内容を他のユーザーの変更とマージできる。GitHub はその Git のうえに構築され、リポジトリと呼ばれる Git プロジェクトをクラウドでホストしたうえで、計画とコラボレーションのツールを追加する。履歴管理の実体が Git、ホストと共同作業の層が GitHub という役割分担が判断の決め手になる。
【他選択肢が違う理由】
- A: 役割が入れ替わっている。リポジトリをクラウドでホストするのは GitHub で、分散バージョン管理システムは Git である。
- C: Git は GitHub がなくても単独で動作し、ローカルのリポジトリだけで変更履歴を記録できる。アカウントは必須ではない。
- D: プルリクエストや Issue は GitHub が Git のうえに追加した共同作業の機能であり、Git 自体が備える機能ではない。
【参考】
Git のような分散バージョン管理システムの特徴を説明したものとして、正しいものはどれですか。
解説
【正解: C】の理由
分散バージョン管理システムでは、すべての開発者がプロジェクトとプロジェクト履歴の完全なコピーを持つ。かつて一般的だった集中型のバージョン管理システムと異なり、中央リポジトリへの常時接続を必要としない点が両者を分ける決め手になる。Git は最も一般的な分散型で、開発者は自分の変更、決定、プロジェクトの進行のタイムライン全体を 1 か所で確認できる。ブランチを使えば、運用コードに対する変更を安全に提案することもできる。
【他選択肢が違う理由】
- A: これは集中型のバージョン管理システムの説明である。分散型では各開発者が履歴の完全なコピーを持つ。
- B: 中央リポジトリへの常時接続を必要としないことが分散型の利点であり、接続がなくてもコミットやブランチの操作はできる。
- D: ブランチは開発者が運用コードへの変更を安全に提案するための仕組みで、1 つのリポジトリに複数を作成できる。
【参考】
Git の基本的なコマンドの説明として正しいものはどれですか。3 つ選択してください。
解説
【正解: A / C / E】の理由
git clone は既にリモートで存在するプロジェクトのローカル コピーを作成し、そのクローンにはすべてのファイル、履歴、ブランチが含まれる。git commit は git add でステージしたスナップショットをプロジェクトの履歴に保存し、変更追跡のプロセスを完了させる。git pull はリモートリポジトリの更新をもとにローカルの開発ラインを最新にする。この 3 つが公式ドキュメントの説明と一致する。
【他選択肢が違う理由】
- B: git add が行うのは変更のステージングで、履歴へのスナップショットの保存は git commit の役割である。説明が入れ替わっている。
- D: 作業中のブランチを一覧表示するのは git branch で、git status は未追跡、変更、ステージされた変更の状態を表示する。
【参考】
GitHub のフォークがブランチと異なる点を説明したものとして、正しいものはどれですか。
解説
【正解: A】の理由
フォークは、アップストリーム リポジトリと呼ばれる別のリポジトリのコピーとして開始されるリポジトリで、独自の設定とアクセス許可を持ちながらアップストリームへの接続は維持される。GitHub でフォークされたリポジトリを表示すると、アップストリーム リポジトリはフォークの名前の下に示される。ブランチが 1 つのリポジトリの内部にある並列の開発ラインであるのに対し、フォークは独自の Issue、プルリクエスト、Wiki を持つ独立したリポジトリである点が決め手になる。
【他選択肢が違う理由】
- B: 説明が入れ替わっている。1 つのリポジトリの一部なのがブランチで、独立したリポジトリなのがフォークである。
- C: フォークは独自の設定とアクセス許可を持つが、アップストリーム リポジトリへの接続は維持され、名前の下に表示される。
- D: フォークの可視性はアップストリームのリポジトリ ネットワークに結び付いており、単独で変更することはできない。
【参考】
GitHub のリポジトリで使われる用語のうち、アップストリームが指すものはどれですか。
解説
【正解: D】の理由
アップストリームは、フォークまたはクローンの元になったリポジトリのブランチを指す。クローンまたはフォークされた側の対応するブランチはダウンストリームと呼ばれ、両者は元と派生という方向の関係で対になる。リモートは自分のコンピューターではなく GitHub に格納されているリポジトリを、ブランチはリポジトリ内に格納されたコードの並列バージョンを指す。元と派生の方向を表すのはアップストリームだけである点が答えを一意に決める。
【他選択肢が違う理由】
- A: これはプルリクエストの説明である。あるブランチから別のブランチへ変更をマージするよう求めるリクエストを指す。
- B: これはリモートの説明である。自分のコンピューターではなく GitHub に格納されているリポジトリを指す。
- C: これはブランチの説明である。プライマリ ブランチに影響しない、コードの並列バージョンを指す。
