サイドバーの壁紙
博主头像
tin博主等级

子の曰わく、我れ三人行なえば必ず我が師を得(う)。其の善き者を択びてこれに従う。其の善からざる者にしてこれを改む。

  • 累積執筆 72 記事
  • 累計作成 32 タグ
  • 累計受入 2 コメント

目 次CONTENT

記事目次
git

(編集中)git fetch、git pull、FETCH_HEADへの理解

tin
tin
2023-10-16 / 0 コメント / 0 いいね! / 427 読み / 1,311 文字

git fetch と git pull の理解を深めるには、git remote、git merge、リモートリポジトリ、ブランチ、コミットID、および FETCH_HEAD について詳しく説明する必要があります。

  1. git remote:元々、git は分散型の構造を持つため、ローカルとリモートは相対的な名前です。ローカルのリポジトリとリモートのリポジトリがバージョンに対応するためには、git remote サブコマンドが必要で、git remote add を使用してローカルの長さに合ったリモートリポジトリを追加する必要があります。この操作を実行することで、ローカルのリポジトリはgit push を実行するとコードをどこに送信すべきかを知ることができます。

  2. git branch:次に、git は複数のバージョンのブランチ管理のために作成されたものであり、ブランチ管理には本質的に関連しています。ブランチは、ソフトウェアの特定のリリースバージョンを独自に記録するためのものです。Git が分散型であるため、ローカルブランチとリモートブランチが存在します。git branch を使用してローカルブランチを表示し、git branch -r を使用してリモートブランチを表示できます。git push 時には、ローカルブランチとリモートブランチを交互に指定でき、バージョンの競合が発生しない限り、選択が柔軟です。

  3. git merge:さらに、git の分散構造は、異なる機能モジュールを複数の人が協力して開発する場合に非常に適しています。各メンバーが独自のブランチで相対的に独立したモジュールを開発する場合、リリースごとに各メンバーのモジュールをマージして統合する必要があります。この場合、git merge が必要です。

  4. git push とコミットID:ローカル作業が完了するたびに、git commit を実行して現在の作業をローカルのリポジトリに保存します。この操作により、コミットIDが生成され、これはバージョンを一意に識別するためのシーケンス番号です。git push を使用すると、このシーケンス番号はリモートリポジトリにも同期されます。

上記の git の要素を理解したら、git fetch と git pull を分析するのはもはや難しくありません。

最初に、git fetch には次の4つの基本的な用法があります:

  1. git fetch:これにより、git remote に含まれるすべてのリモートリポジトリに含まれるブランチの最新のコミットIDが更新され、それらは .git/FETCH_HEAD ファイルに記録されます。

  2. git fetch remote_repo:これにより、remote_repo という名前のリモートリポジトリ上のすべてのブランチの最新のコミットIDが更新され、それらが記録されます。

  3. git fetch remote_repo remote_branch_name:これにより、remote_repo という名前のリモートリポジトリ上の remote_branch_name という名前のブランチが更新されます。

  4. git fetch remote_repo remote_branch_name:local_branch_name:これにより、remote_repo という名前のリモートリポジトリ上の remote_branch_name という名前のブランチが更新され、ローカルに local_branch_name という名前のローカルブランチが作成され、リモートブランチのすべてのデータが保存されます。

FETCH_HEAD:これはバージョンリンクで、現時点でリモートリポジトリから取得したブランチの末尾バージョンを指すローカルのファイルです。

git pull の動作:

git pull:最初に、ローカルの FETCH_HEAD の記録に基づいて、ローカルの FETCH_HEAD の記録とリモートリポジトリのバージョン番号を比較し、その後 git fetch を使用して現在指しているリモートブランチの後続バージョンのデータを取得し、それをローカルの現在のブランチにマージします。

0
git
  • 0

コメント欄