リポジトリをクローンする

GitGitBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Gitリポジトリをクローンする方法と、いくつかの高度なクローンオプションを探る方法を学びます。Gitは、ソフトウェア開発で広く使用される強力なバージョン管理システムです。リポジトリをクローンすることは、リモートリポジトリのローカルコピーを作成し、コードを編集したり、変更を加えたり、他の人と協力したりするための基本的なスキルです。この実験は初心者向けに設計されており、リポジトリクローンの実際の応用に焦点を当てて、工程を段階的に案内します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git(("Git")) -.-> git/SetupandConfigGroup(["Setup and Config"]) git/SetupandConfigGroup -.-> git/clone("Clone Repo") git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/clone -.-> lab-387454{{"リポジトリをクローンする"}} git/branch -.-> lab-387454{{"リポジトリをクローンする"}} git/log -.-> lab-387454{{"リポジトリをクローンする"}} end

リモートリポジトリを理解して基本的なリポジトリをクローンする

クローンを始める前に、リモートリポジトリが何か、そしてなぜGitにおいて重要かを理解しましょう。

リモートリポジトリは、インターネット上またはどこかのネットワークにホストされているプロジェクトのバージョンです。それは、誰もが変更をプッシュしたり、更新をプルしたりできる集中的な場所を提供することで、他の人と協力することを可能にします。コードのクラウドストレージのように考えてくださいが、バージョン管理の追加の利点も備えています。

GitHubは、リモートGitリポジトリをホストする最も人気のあるプラットフォームの1つです。それは、リポジトリを管理するためのウェブベースのインターフェイスや、問題追跡、プルリクエスト、プロジェクト管理ツールなどの追加機能を提供します。他の同様のプラットフォームには、GitLabやBitbucketがあります。

では、GitHubから簡単なリポジトリをクローンしましょう。例としてgit-playgroundリポジトリを使用します。

まず、ローカルコピーを保存したいプロジェクトディレクトリに移動します:

cd ~/project

このコマンドは、現在のディレクトリを~/projectに変更します。~記号はホームディレクトリを表しますので、このパスは通常/home/yourusername/projectに変換されます。

次に、リポジトリをクローンしましょう:

git clone https://github.com/labex-labs/git-playground.git

このコマンドを分解してみましょう:

  • git cloneは、リポジトリのコピーを作成するためのGitコマンドです。
  • https://github.com/labex-labs/git-playground.gitは、クローンしたいリポジトリのURLです。

このコマンドを実行すると、Gitは次のことを行います:

  1. 現在の場所(~/project)にgit-playgroundという名前の新しいディレクトリを作成します。
  2. このディレクトリに新しいGitリポジトリを初期化します。
  3. クローン元のURLを指す「origin」という名前のリモートを設定します。
  4. リモートリポジトリからすべてのデータをダウンロードします。
  5. メインブランチ(通常は「master」または「main」と呼ばれます)の最新バージョンの作業コピーをチェックアウトします。

クローンプロセスが完了すると、次のような出力が表示されるはずです:

Cloning into 'git-playground'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (2/2), done.
remote: Total 9 (delta 1), reused 1 (delta 1), pack-reused 7
Receiving objects: 100% (9/9), done.
Resolving deltas: 100% (1/1), done.

次に、リポジトリが正常にクローンされたことを確認しましょう:

ls -l

このコマンドは、現在のディレクトリの内容を一覧表示します。新しいgit-playgroundディレクトリが表示されるはずです。

cd git-playground

このコマンドは、現在のディレクトリを新しくクローンしたリポジトリに変更します。

git status

このコマンドは、作業ディレクトリの状態を表示します。どのブランチにいるか(おそらく「main」または「master」)と、作業ディレクトリがクリーンであることを示すメッセージが表示されるはずです。

おめでとうございます!あなたは初めてのリポジトリをクローンしました。このローカルコピーは現在GitHub上のリモートリポジトリに接続されており、必要な権限があれば更新を取得したり、自分自身の変更をプッシュすることができます。

忘れないでください、リポジトリをクローンすることで、すべてのプロジェクトファイルと完全なGit履歴がコピーされます。これは、オフラインでプロジェクトを作業し、変更を加え、新しいブランチを作成したり、その他のことをすべてローカルマシン上で行うことができることを意味します。

クローンしたリポジトリを調べる

リポジトリをクローンしてgit-playgroundディレクトリにいるので、その内容をもっと詳細に調べてみましょう。

まず、ディレクトリの内容を見てみましょう:

ls -la

このコマンドは、隠しファイルも含めたすべてのファイルとディレクトリを表示します。.gitディレクトリが見えるはずで、これはこのリポジトリに関連するすべてのGit関連情報が含まれています。

以下が見られるかもしれません:

  • 通常のファイルとディレクトリ:これらは実際に作業できるプロジェクトファイルです。
  • .gitディレクトリ:この隠しディレクトリは、Gitがすべての追跡情報を保存する場所です。
  • .gitignoreファイル(存在する場合):このファイルは、プロジェクトで無視するファイルやディレクトリをGitに知らせます。

次に、リポジトリのコミット履歴を確認しましょう:

git log --oneline

これは、コミット履歴の要約版を表示します。各行はコミットを表し、その一意の識別子(ハッシュ)とコミットメッセージが含まれています。

クローンしたリポジトリの構造を理解することは、効果的なバージョン管理にとって重要です。.gitディレクトリには、Gitがバージョンを管理するために使用するすべての情報が含まれており、他のファイルとディレクトリはプロジェクトの現在の状態を表しています。

また、このローカルリポジトリに関連付けられたリモートリポジトリを確認しましょう:

git remote -v

このコマンドは、ローカルリポジトリにリンクされたリモートリポジトリを表示します。クローン元のGitHub URLを指す「origin」が見えるはずです。

origin  https://github.com/labex-labs/git-playground.git (fetch)
origin  https://github.com/labex-labs/git-playground.git (push)

特定のディレクトリにクローンする

時には、リポジトリを別の名前のディレクトリにクローンしたい場合があります。これは、プロジェクトの複数のバージョンを作業しているときや、ディレクトリにより分かりやすい名前を付けたいときに便利です。

同じリポジトリを再度クローンしましょうが、今回はmy-projectという名前のディレクトリにクローンします:

cd ~/project
git clone https://github.com/labex-labs/git-playground.git my-project

このコマンドは2つのことを行います:

  1. git-playgroundリポジトリをクローンします。
  2. クローンしたファイルをgit-playgroundではなくmy-projectという新しいディレクトリに配置します。

クローンプロセスが完了すると、次のような出力が表示されるはずです:

Cloning into'my-project'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (2/2), done.
remote: Total 9 (delta 1), reused 1 (delta 1), pack-reused 7
Receiving objects: 100% (9/9), done.
Resolving deltas: 100% (1/1), done.

この機能は、以下の場合に特に便利です:

  • 既にリポジトリと同じ名前のディレクトリがある場合
  • 異なる目的で同じリポジトリを複数回クローンしたい場合
  • ローカルプロジェクト構造の文脈でより意味のある名前をディレクトリに付けたい場合

忘れないでください、ディレクトリの名前はGitリポジトリ自体には影響しません。それはただあなたのローカルマシン上のフォルダの名前にすぎません。

新しいクローンの内容を確認しましょう:

cd my-project
ls -la
git remote -v

これらのコマンドは、my-projectディレクトリの内容とそれが接続されているリモートリポジトリを表示します。

深さ指定による浅いクローン

時には、完全な履歴なしでリポジトリの最新バージョンだけが必要な場合があります。そのような場合、--depthオプションを使用して浅いクローンを実行することができます。

同じリポジトリを再度クローンしましょうが、今回は最新のコミットのみを取得します:

cd ~/project
git clone --depth 1 https://github.com/labex-labs/git-playground.git shallow-repo

このコマンドは、履歴が最後のコミットまで切り詰められた浅いクローンを作成します。--depth 1オプションは、Gitに最新のコミットのみを取得するように指示します。

浅いクローンは大幅に高速で、ディスク領域を少なく占めることができます。これは、完全な履歴が必要ない場合の大きなリポジトリに対して特に便利です。

浅いクローンを確認するには、新しいディレクトリに移動してgit logを確認します:

cd shallow-repo
git log --oneline

ログには1つのコミットのみが表示されるはずです。

後でより多くの履歴が必要になった場合、次のコマンドを使用して取得することができます。

まだこのコマンドを実行しないでください。そうしないと、検証ステップが失敗します。

git fetch --unshallow

これにより、リポジトリの完全な履歴が取得されます。

特定のブランチをクローンする

時には、リポジトリの特定のブランチのみをクローンしたい場合があります。これは、プロジェクトの特定の機能やバージョンにのみ興味があるときに便利です。

リポジトリの特定のブランチをクローンしましょう:

cd ~/project
git clone -b main https://github.com/labex-labs/git-playground.git branch-repo

-b mainオプションは、Gitにmainブランチのみをクローンするように指示します。もし異なるブランチをクローンしたい場合は、mainをそのブランチの名前に置き換えてください。

クローン後、新しいディレクトリに移動して、どのブランチにいるかを確認します:

cd branch-repo
git branch

mainブランチ(または指定したブランチ)のみが表示されるはずです。

この方法は、特定のブランチのみが必要な大きなリポジトリを扱う際に、時間とディスク領域を節約することができます。

まとめ

この実験では、Gitリポジトリをクローンする方法と、いくつかの高度なクローン技術を学びました。以下をカバーしました:

  1. リモートリポジトリの理解と基本的なリポジトリクローン
  2. クローンしたリポジトリの内容を調べる
  3. カスタム名で特定のディレクトリにリポジトリをクローンする
  4. 履歴が制限された浅いクローンを作成する
  5. リポジトリの特定のブランチをクローンする

これらのスキルにより、既存のプロジェクトを効率的に扱い、オープンソースソフトウェアに貢献し、自分自身のコードをより効果的に管理することができます。クローンはただの始まりにすぎません。Gitには、バージョン管理とコラボレーションに関してさらに多くの強力な機能があります。

Gitの学習を続けるにつれて、これらのさまざまなクローン技術がさまざまなシナリオで非常に役立つことがわかり、時間を節約し、プロジェクトをより効率的に管理するのに役立つことでしょう。