章 ▾ 第2版

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

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

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

git fetch

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

このコマンドについては、リモートからのフェッチとプルで初めて取り上げ、リモートブランチでもその使用例を見続けます。

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

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

Refspecでは、git fetchがデフォルトとは少し異なる動作をするように、非常にカスタムなrefspecを設定しています。

git pull

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

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

リベースするときのリベースでは、リベースの困難を解決するためにこれを使用する方法も見ています。

リモートブランチのチェックアウトでは、URLと共にこれを使用して、一時的に変更をプルインする方法を示しています。

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

git push

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

git pushコマンドについては、リモートへのプッシュで初めて取り上げます。ここでは、ブランチをリモートリポジトリにプッシュする基本について説明します。プッシュでは、特定のブランチをプッシュすることについてさらに深く掘り下げ、追跡ブランチでは、自動的にプッシュするための追跡ブランチを設定する方法を見ています。リモートブランチの削除では、git pushでサーバー上のブランチを削除するために--deleteフラグを使用しています。

プロジェクトへの貢献を通して、複数のリモート経由でブランチ上の作業を共有するために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コマンドは、プロジェクトの特定のSNAPSHOTのアーカイブファイルを作成するために使用されます。

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

git submodule

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

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

scroll-to-top