Skip to main content

Gitのリモートブランチをチェックアウトする方法とその仕組み

blog feature snyk container custom base recommendations

2020年12月15日

0 分で読めます

Gitは、多くの開発者がプロジェクトのバージョン管理に使用する優れたツールです。Subversion(SVN)やConcurrent Versioning System(CVS)など、ほかにもさまざまなバージョン管理システムがありますが、Gitが圧倒的に広く使われています。その理由の一つは、分散開発を重視していることと、ブランチを簡単に使えることです。Gitのブランチと、git checkout remote branchが実際に何を意味するのかを見ていきましょう。

ブランチとは?

ブランチは、メインの開発パイプラインから分岐するためのシンプルな方法です。新機能やバグ修正の開発によく使われます。変更をブランチ内にまとめることで、メインブランチやmasterブランチをクリーンな状態に保てます。Gitのブランチは簡単かつ低コストで作成できるため、とても便利です。ほかのバージョン管理システムとは異なり、Gitのブランチはコードのコピーではなく、ブランチの起点となった元のノードを指すポインターにすぎません。

4つのコミットがある緑色のMainブランチと、最初のコミットから分岐する青色のブランチを示す図

ブランチをチェックアウトするには?

ローカルマシンにブランチがすでにある場合は、コマンド git checkout <branch name>を使って、そのブランチをチェックアウトするか、切り替えるだけです。

たとえば、メインブランチから「dev」という名前の新しいブランチを作成するには、git branch devを使います。このコマンドで作成されるのはブランチだけです。そのブランチで作業してコミットするには、先ほどと同じようにgit checkout devを使ってブランチをチェックアウトする必要があります。

注意:ローカルマシンでブランチをチェックアウトすると、以降のコミットはメインブランチではなく、新しいブランチに追加されます。この仕組みを利用すれば、あるブランチからさらにブランチを作成することもできます。少し奇妙に聞こえるかもしれませんが、新しいブランチで新機能を開発していて、少し試行錯誤したい場面を想像してください。その場合、機能ブランチから分岐する別の階層のブランチで作業するのは、とても理にかなっています。

リモートブランチをチェックアウトするには?

リモートブランチは、チームのほかのメンバーと開発作業を共有するのに最適な方法です。git checkout remote branchは実在するコマンドではない点に注意してください。誰かが公開したリモートブランチをチェックアウトするには、まずgit fetchを実行します。このコマンドは、リモートブランチへの参照を含め、リモートリポジトリの参照情報をローカルマシンにダウンロードします。あとはgit checkout <remote branch name>を実行するだけです。

リモートブランチからローカルブランチを作成するには?

fetchの実行後、前述のようにリモートブランチをチェックアウトできます。これにより、そのブランチのローカルコピーがマシン上に作成されます。リモートブランチをチェックアウトし、ローカルマシンでは別の名前を付けたい場合は、次のコマンドを実行します。

git checkout -b myLocalName origin/remoteName

ローカルブランチのmyLocalNameは、リモートブランチのremoteNameに紐付けられます。originは、プロジェクトのクローン元となったリモートリポジトリを指す標準的な名前です。複数のリモートリポジトリを使用している場合など、異なる名前になっていることもあります。

ローカルブランチのセキュリティ脆弱性をスキャンするには?

ローカルマシンでリモートブランチをチェックアウトしたら、Snyk CLIを使ってローカルでスキャンできます。無料アカウントに登録し、CLIツールをインストールしたら、ブランチのルートディレクトリに移動して、次のコマンドを実行します。

  • snyk test:オープンソースの依存関係をチェック

  • snyk code test:ソースコードを静的解析し、脆弱性を検出

  • snyk container test:コンテナを解析し、セキュリティ上の問題を検出

  • snyk iac test:Infrastructure as Codeに脆弱性がないことを確認

詳しくは、便利なチートシートとドキュメントをご覧ください。

ローカルブランチをリモートブランチにするには?

ローカルブランチmyNewFeatureで作業していて、そのブランチをリモートで共有したい場合は、upstreamを設定してリモートブランチにする必要があります。

変更をプッシュするときは、まず次のように-uまたは--set-upstreamを使います。

git push -u origin myNewFeature

これで、ローカルブランチに対応するリモートブランチも作成されました。次回から変更をプッシュするときは、パラメーターを指定せずにgit pushを実行するだけです。

デフォルトブランチをセキュリティ脆弱性のない状態に保つには?

Snykは、GitHub、Bitbucket、GitLab、Azure Repos上のすべてのプロジェクトに対応するネイティブのインテグレーションを提供しています。リポジトリを接続すれば、デフォルトブランチでSnyk Open Source、Snyk Code、Snyk IaC、Snyk Containerなどのツールを直接利用できます。Gitインテグレーションでは、自動修正のプルリクエストを作成し、マージ前に受信したPRをスキャンできます。これにより、セキュリティを手軽に取り込んでリポジトリにマージし、脆弱なコードのリリースを防止できます。

Capture the Flagを始めよう

オンデマンドのバーチャル入門ワークショップを見て、Capture the Flagの課題の解き方を学びましょう。

続きを読む

blog feature ai pink
Blog

PHP2Shellが最後ではない。次の脆弱性が最初に現れる場所

PHP2Shellは、エンジンレベルの欠陥がインターネットに公開されたアプリケーションをいかに速く危険にさらすかを示しました。次の脆弱性が公表される前に、外部からの資産把握、迅速なテスト、繰り返しの確認がなぜ重要なのかをご紹介します。

Blog

Snyk UNFILTERED:初開催のカスタマーサミットの舞台裏

Snyk初のカスタマーサミットで、セキュリティリーダーたちはAIのリスク、脆弱性の修正、自律型エージェントのガバナンスについて率直な見解を共有しました。5つのテーマから、AIのスピードに合わせてチームがセキュリティをどう適応させているかが見えてきます。