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

フロンティアモデルは脆弱性を発見した。攻撃者だけがエクスプロイトチェーンを見つけた。

静的解析で欠陥は見つかりましたが、ライブ攻撃テストで侵害につながる連鎖を実証できたのは唯一でした。Evo COS、Claude Security、Claude Code Securityを比較します。

feature insights context
Blog

自律型攻撃はすでに始まっている。防御もそのスピードに追いつかなければならない。

自律型攻撃者によって、防御に使える時間は短くなっています。継続的な検出、修復、検証、予防で、セキュリティチームが攻撃に歩調を合わせる方法をご紹介します。

Blog

AIコーディングエージェントが不適切なアクセス制御を繰り返し実装する理由

AIコーディングエージェントは、コンパイルが通りレビューも通過する一方で、あるテナントのデータを別のテナントに公開してしまう認可ロジックを生成することがあります。不適切なアクセス制御が検出しにくい理由と、その防止策をご紹介します。