Git
章 ▾ 第2版

A3.5 付録C:Gitコマンド - プロジェクトの共有と更新

プロジェクトの共有と更新

Gitにはネットワークにアクセスするコマンドはそれほど多くなく、ほとんどすべてのコマンドはローカルデータベースで動作します。作業を共有したり、他の場所から変更をプルしたりする準備ができたら、リモートリポジトリを扱うコマンドがいくつかあります。

git fetch

git fetchコマンドは、リモートリポジトリと通信し、現在のリポジトリにないリモートリポジトリ内のすべての情報をフェッチして、ローカルデータベースに保存します。

このコマンドについては、まずリモートからのフェッチとプルで見て、リモートブランチでその使用例を引き続き見ていきます。

また、プロジェクトへの貢献のいくつかの例でも使用します。

デフォルトのスペース外の単一の特定のリファレンスをフェッチするためにプルリクエスト参照で使用し、バンドルでバンドルからフェッチする方法を確認します。

git fetchをデフォルトとは少し異なる動作をさせるために、Refspecで高度にカスタマイズされたリファレンス仕様を設定します。

git pull

git pullコマンドは基本的にgit fetchコマンドとgit mergeコマンドの組み合わせであり、Gitは指定したリモートからフェッチし、すぐに現在のブランチにマージしようとします。

git fetch については、リモートからのフェッチとプルで簡単に紹介し、リモートの調査では、実行した場合に何がマージされるかを確認する方法を示しています。

また、リベース時のリベースでは、リベースの困難を解決するためにどのように使用できるかを見ていきます。

リモートブランチのチェックアウトでは、URLを指定して変更を一時的にプルする方法を示します。

最後に、コミットの署名では、プルするコミットにGPG署名がされていることを検証するために、--verify-signaturesオプションを使用できることを簡単に説明します。

git push

git push コマンドは、別のリポジトリと通信し、ローカルデータベースにあるがリモートデータベースにはないものを計算し、その差分を別のリポジトリにプッシュするために使用されます。他のリポジトリへの書き込みアクセスが必要なため、通常は何らかの形で認証されます。

まず、リモートへのプッシュgit push コマンドを見ていきます。ここでは、ブランチをリモートリポジトリにプッシュする基本を説明します。プッシュでは、特定のブランチのプッシュについて少し詳しく説明し、トラッキングブランチでは、自動的にプッシュするためのトラッキングブランチの設定方法を見ていきます。リモートブランチの削除では、--deleteフラグを使用して、git pushでサーバー上のブランチを削除します。

プロジェクトへの貢献全体を通して、複数のリモートを介してブランチで作業を共有するために git push を使用するいくつかの例を見ていきます。

タグの共有では、作成したタグを --tags オプションを使って共有する方法を見ていきます。

サブモジュールの変更の公開では、サブモジュールを使用する際に非常に役立つ可能性がある、スーパープロジェクトをプッシュする前に、すべてのサブモジュールの作業が公開されていることを確認するために、--recurse-submodules オプションを使用します。

その他のクライアントフックでは、プッシュが完了する前に実行してプッシュが許可されるべきかを検証するために設定できるスクリプトである pre-push フックについて簡単に説明します。

最後に、Refspecのプッシュでは、通常使用される一般的なショートカットではなく、完全な refspec を使用したプッシュについて見ていきます。これにより、共有したい作業を非常に具体的に指定できます。

git remote

git remote コマンドは、リモートリポジトリの記録を管理するためのツールです。長いURLを「origin」のような短いハンドルとして保存できるため、毎回入力する必要がありません。これらのハンドルを複数持つことができ、git remote コマンドは、それらを追加、変更、削除するために使用されます。

このコマンドについては、リモートでの作業で、リスト表示、追加、削除、名前変更を含めて詳細に説明します。

このコマンドは、その後のほぼすべての章でも使用されますが、常に標準的な git remote add <name> <url> の形式で使用されます。

git archive

git archive コマンドは、プロジェクトの特定の時点のスナップショットのアーカイブファイルを作成するために使用されます。

リリースの準備で共有用のプロジェクトの tarball を作成するために git archive を使用します。

git submodule

git submodule コマンドは、通常のリポジトリ内で外部リポジトリを管理するために使用されます。これはライブラリやその他の種類の共有リソースの場合があります。submodule コマンドには、これらのリソースを管理するためのいくつかのサブコマンド (addupdatesync など) があります。

このコマンドは、サブモジュールでのみ言及され、完全に説明されています。

scroll-to-top