本を書いていて、元のものを混乱させずに新しいアイデアを試すことがあると思います。その場合、各アイデアに独自のノートブックを作成し、草稿を区切って保つことができます。
Gitは、バージョン管理システムで、ソフトウェア開発者が「ブランチ」を通じて同様のことを行えます。各ブランチは独立した開発パスであり、メインコードベースを影響さないように変更を探すことができます。
この記事では、git clone
コマンドの使用方法を説明します。特別に、特定のブランチを克隆する方法に注目してください。Gitについてもっと学ぶ場合は、このGit入門コースを推奨します。
簡単な回答をして、急いでいる方にお供えします。その後、詳細に取り組みます。
簡単な回答: 特定のブランチを克隆する方法
Gitリポジトリから特定のブランチを克隆するには、以下のコマンドを使用します。
git clone --single-branch --branch <branch_name> <repository_url>
<branch_name>
に目的のブランチ名を入力し、<repository_url>
にリポジトリのURLを入力してください。このコマンドは指定したブランチのローカルコピーを作成し、そのブランチで即座に、焦点を当てた開発を可能にします。
例
この記事の中では、このリポジトリを使用します。これを使って、学びたいコマンドを自分のマシンで試してください。このリポジトリには3つのブランチが含まれています。
main
: 2つのテキストファイルのデフォルトブランチ。add-new-file
: 3つ目のファイルが追加されたブランチ。modify-file
: 2つ目のファイルが修正されたブランチ。
これが私たちがブランチadd-new-fileを克隆する方法です。
git clone --single-branch --branch add-new-file https://github.com/fran-aubry/git-clone-example.git
何がgit clone
?
デフォルトで、git clone
は、全てのブランチを克隆し、ローカルマシンの新しいディレクトリに整个のリポジトリをコピーするように設計されています。以下は、スyntax
git clone <repository_url>
例のリポジトリを克隆するには、以下のように行います。
git clone https://github.com/fran-aubry/git-clone-example.git
このコマンドを実行する後、すべてのブランチはあなたのローカルマシンにコピーされます。しかし、一度に一度だけ、チェックアウトされたブランチのファイルが表示されます。リポジトリをクローンした後、デフォルトのブランチ(通常main
またはmaster
と呼ばれる)がチェックアウトされます。
ブランチの変更
完全に克隆した後、git checkoutコマンドを使用して、希望のブランチに(checkout)変更することができます。たとえば、modify-fileブランチにcheckoutするために、以下のように行います。
git checkout modify-file
克隆深度
Gitと共に作業している時、ブランチの変更はgit commit
コマンドを使用してコミットすることで保存されます。
それぞれのコミットは、必要があれば後でリトラクトできる新しいブランチの状態を作成します。コミットを想定して、Gitがすべてのスナップショットを追跡しています。
任何时候、ブランチをこれらのスナップショットの任意一个にリトラクトすることができます。
`git clone`コマンドは、オプションを使用していない場合、すべてのブランチのすべてのコミットをローカルマシンにダウンロードします。プロジェクトのサイズによって、これはローカルストレージに多大な空きをとらないかもしれません。全ての歴史を必要としない場合、--depth
パラメーターを使用して、克隆したいコミット(またはスナップショット)の数を指定することができます。
主要ブランチを克隆しながら、最新のコミットのみを読み込むには、以下のコマンドを使用してください。
git clone --depth=1 https://github.com/fran-aubry/git-clone-example.git
特定のブランチを克隆する
Git クローン コマンドを使ってリポジトリを克隆する方法を学んだ。git cloneはデフォルトですべての内容をローカルマシンに克隆します。多くの場合、特定のブランチだけを操作したいと思うかもしれません。それでは、克隆時にその特定のブランチだけを克隆することがより効率的です。この方法はディスクスペースを節約し、克隆後にブランチを切り替える必要がないように、すぐに作業を開始できます。
本の書き改めの比喩において、2章の改訂を担当することに指名されたときのように、このような場合、この作业のためのブランチだけを克隆するべきです。他の章の改訂に関連したブランチにアクセスする必要はないからです。
gitを使って单一のブランチを克隆することはできます。--single-branch
と--branch
引数を追加し、ブランチの名前を記述することです。
git clone --single-branch --branch <branch_name> <repository_url>
このコマンドを分解しましょう。
git clone
: これは、远处の源からリポジトリをローカルマシンにコピーする基本的なgitコマンドです。
--single-branch
: このオプションは、Gitに单一のブランチしか克隆しないように指示します。ブランチを指定しない場合、デフォルトのブランチが克隆されます。
--branch
: このオプションは克隆するブランチを指定します。>は克隆したいブランチの名前です。
: これはリポジトリのURLです。
例えば、私のリポジトリからmodify-fileブランチだけを克隆するには、以下のようにすることができます。
git clone --single-branch --branch add-new-file https://github.com/fran-aubry/git-clone-example.git
克隆したブランチでの操作方法
ブランチを操作する際に、3つの基本的な操作が必要です。
- 現在の状態をスナップショットとして保存し、現在の作业を保存します。
- 自分の変更点をアップロードし、他の人がアクセスできるようにします。
- 他の人の変更点をダウンロードし、自分のものと結合します。
git commit
を使用して、自分の変更点を保存します。
Gitでは、あなたの作業を保存することは、コミットと呼ばれます。このプロセスは、あなたが作業しているブランチの現在の状態をスナップショットとして撮影します。
ブランチの状態は、各コミットごとにあなたのローカルマシン上に保存され、進捗の様々な段階をNavigateすることができます。
Gitに変更をコミットするには、git commit
コマンドを使用します。しかし、変更をコミットする前に、Gitは変更を含めるファイルを知る必要があります。変更を保存するファイルを指定するために、git add
コマンドを使用します。このコマンドの構文は以下の通りです:
git add <path_to_file>
構文では、<path_to_file>
はコミットしたいファイルのパスです。たとえば、例のリポジトリからmodify-file
ブランチにあり、file2.txt
にパラグラフを追加した場合、そのファイルを追加するためには以下のように実行する必要があります:
git add file2.txt
全てのファイルをコミットに含めるには、以下のコマンドを実行することができます。
git commit -m <message>
ここで、<message>
引数は、双引き文字で囲まれた簡潔なメッセージであり、変更内容を簡単に説明します。たとえば:
git commit -m "Add paragraph"
次のコミットメッセージの慣例があります。これらは、プロジェクトに取り組むすべての人間と間で明確さと理解を保証するために重要です。
- 命令形を使用してください。コミットメッセージを開始する際に、命令形の動詞を使用してください(例: “Add,” “Fix,” “Update”)。たとえば、”Added new feature”の代わりに”Add new feature”と書いてください。
- 簡潔で説明的: 50文字以下の簡潔なメッセージを目指す。しかし、変更を説明する際には明確性を重視してください。”Changed stuff”などでなく”Navigation barのスタイリングを更新”と書いてください。
- 一般的なメッセージを避ける: “Fix bugs”や”Make improvements”のような暧昧なメッセージは避けるでしょう。代わりに、特定の内容を示すように書いてください。”Login form validationにおけるバグの修正”や”ドキュメントの可読性の改善”のように。
変更をgit push
でアップロードします。
あなたがコミットすると、ローカルマシン上の変更をスナップショットとして作成します。他の人があなたの変更にアクセスするためには、あなたはそれらをアップロードする必要があります。これを行うためには、push
コマンドを使用します。
Gitのpush
コマンドの基本構文は以下の通りです。
git push <remote> <branch>
以下でそれを分解しましょう。
<remote>
は、変更を推送したい远隔リポジトリの名前です。リポジトリを克隆した際に、远隔リポジトリはデフォルトでoriginと呼ばれます。<branch>
は、変更を远隔リポジトリに推送したいブランチ名です。この引数を省略した場合、Gitは現在のブランチと远隔リポジトリの追跡設定に基づいて変更を推送します。
以下はgit push
の一般的な使用例です:
- 現在のブランチから変更を推送:
git push
- 特定のブランチからの変更をプッシュする:
git push origin <branch>
変更をダウンロードするには git pull
Gitは、大規模なチームが同じプロジェクトで同時に作業することを可能にします。同僚があなたの作業中のブランチを編集すると、あなたのローカルブランチがリモートブランチに比べて古くなることがあります。
他の人のコミットをダウンロードするには、git pull
コマンドを使用します。gitのプッシュコマンドの基本構文は次のとおりです:
git pull <remote> <branch>
各パラメータの役割は次のとおりです:
<remote>
:これは、取得したい遠隔リポジトリの名前です。デフォルトでは、このリポジトリはoriginと名づけられています。<branch>
:これは、変更を取得したいブランチの名前です。指定しない場合、gitは現在のブランチとその上游のブランチを使用して変更を取得します。
以下は、git pull
の一般的な使用例です。
- 現在のブランチから変更を取得する:
git pull
- 特定のブランチから変更を取得する:
git pull origin <branch>
コミット-拉取-推送 workflow
Gitを使用する際に、常に更新をプルして、ローカルブランチを最新状態に保ち続けることを推奨します。以下の最佳实践に従うことをお勧めします。
- 作業を始める前に、現在のブランチの最新更新をプルして、最新のバージョンで作業していることを確認してください。
- よくコミットして、それぞれのコミットが小さく、論理的に関連した変更を含んでいることを保証してください。
- 変更を行い、コミットを作成した後、他の人が同時に更新を行った可能性があるため、ブランチを更新するために再びプルしてください。
- 最後に、リモートリポジトリに変更をプッシュしてください。
Gitコンフリクト
远隔リポジトリから変更をダウンロードするためにgit pullコマンドを実行する际に、他のコミットがあなたのローカルコミットと同じ行を修正したという状況に遭遇することがあります。Gitは自動的に変更を合并しようと試みますが、多くの場合に成功します。たとえば、同じファイルの異なる場所に変更が行われている場合、Gitは区切り文字を通じて这些変更を seamlesに合并できます。これは、コミットが異なる節に影響を与えているからです。
しかし、あなたと他のコントリビュータが同じパラグラフを編集した場合、gitはどのバージョンを保持するか決定できず、合并衝突を引き起こします。この状況では、あなたは手動で衝突を解決し、どの変更を保持するか決定する必要があります。
衝突を解決するための詳細なガイドラインについて、このGitのマージコンフリクトを解決する方法の記事を読むことを推奨します。
GitHub Download
特定の状況では、リポジトリのローカルコピーを作成し、それを変更する意图を持たないで使用したい場合があります。公的なリポジトリなら、あなたのローカルマシンにGitをインストールする必要はありません。以下のように、コードボタンを押してからZIPをダウンロードボタンを押すことで、GitHubからリポジトリを直接ダウンロードすることができます。
結論
Gitのクローン機能を使用すると、Gitリポジトリをあなたのローカルマシンにコピーすることができます。これにより、コードを利用したり、新しい機能を追加して拡張することができます。リポジトリをクローンする際には、すべてのブランチがダウンロードされ、ディスクスペースを大量に消費することがあります。
ブランチは特定の変更または機能に対して作業を行うために利用されます。特定のブランチを克隆することで、関連のない作业をダウンロードせずに、それらの変更に貢献できます。したがって、ディスクスペースを大幅に節約し、ローカルのディスクをよりクリーンに保ちます。
この主題についてもっと学ぶことができる場合、このGitHubとGitの初心者向けトレーニングをお勧めします。
Source:
https://www.datacamp.com/tutorial/git-clone-branch-tutorial