過去問ドリル

LinuCレベル3 プラットフォームスペシャリスト プラットフォームの運用管理 問22

プラットフォームの運用管理/インフラ構成のGit管理とパイプラインの自動化

インフラ構成のリポジトリで、作業ブランチfeatureにチェックアウトしている。mainの最新の変更を取り込みつつ、マージコミットを作らず、featureのコミットがmainの先端から続く一直線の履歴にしたい。実行するコマンドとして適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「プラットフォームの運用管理」に対応。実際の試験問題ではありません)

正解:D

解説

git rebase main は、featureにあってmainに無いコミットを取り出し、mainの先端の上に順に適用し直します。その結果、マージコミットの無い一直線の履歴になり、レビューや差分の確認がしやすくなります。ただし、適用し直したコミットは新しいコミットIDを持つため、既にpushして他の人が使っているブランチでrebaseすると履歴の食い違いが起こります。そのようなブランチでは、rebaseを避けるか、チームで運用ルールを決めておく必要があります。

選択肢ごとの解説

  • A誤り。--no-ff は早送りできる場合でも必ずマージコミットを作るオプションで、要件と逆の結果になります。
  • B誤り。reset --hard main はfeatureの指す先をmainと同じコミットに移し、featureで行ったコミットが履歴から外れてしまいます。
  • C誤り。cherry-pick main はmainの先端の1コミットだけをfeatureの上に複製するもので、mainの変更をすべて取り込むことにはなりません。
  • D正しい。rebaseはfeatureのコミットをmainの先端の上に適用し直し、マージコミットの無い一直線の履歴にします。
LinuCレベル3 プラットフォームスペシャリストの問題を演習モードで解く