Gitのリモートブランチをチェックアウトする方法とその仕組み
2020年12月15日
0 分で読めますGitは、多くの開発者がプロジェクトのバージョン管理に使用する優れたツールです。Subversion(SVN)やConcurrent Versioning System(CVS)など、ほかにもさまざまなバージョン管理システムがありますが、Gitが圧倒的に広く使われています。その理由の一つは、分散開発を重視していることと、ブランチを簡単に使えることです。Gitのブランチと、git checkout remote branchが実際に何を意味するのかを見ていきましょう。
ブランチとは?
ブランチは、メインの開発パイプラインから分岐するためのシンプルな方法です。新機能やバグ修正の開発によく使われます。変更をブランチ内にまとめることで、メインブランチやmasterブランチをクリーンな状態に保てます。Gitのブランチは簡単かつ低コストで作成できるため、とても便利です。ほかのバージョン管理システムとは異なり、Gitのブランチはコードのコピーではなく、ブランチの起点となった元のノードを指すポインターにすぎません。

ブランチをチェックアウトするには?
ローカルマシンにブランチがすでにある場合は、コマンド 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の課題の解き方を学びましょう。



