git pull(以下pull) と git fetch(以下fetch)
pullとfetchはどちらとも、リモートリポジトリから更新情報を取得するコマンド
↓↓2つの違いについて説明します。
git fetch
リモートリポジトリから更新情報をローカルに取り込みます。
その際、作業中のコードやブランチにはなにも変更が加わらず、安全にリモートの状態を確認できます。
メリット
- 慎重に変更内容を取り込みことができる
デメリット
- マージしたい場合、取得後に手動で行う必要があるため少し煩雑になる
使用例
git fetch origin ブランチ名 // 特定のブランチの最新状態を取得
git fetch origin // 特定のリポジトリを取得
git fetch --all // 全てのリポジトリから取得
git fetch -t // タグを取得
git fetch --tags // タグを取得
git fetch -p // ブランチ削除の同期
git fetch --prune // ブランチ削除の同期
どのようなときに使用するのか
説明の通り、リモートリポジトリの情報を確認したいが、まだ作業中のブランチにマージしたくないときに使用します。
git pull
fetchと同じく、更新情報をローカルに取り込みますが、pullはそれに加えて現在いるブランチに自動的にマージ(merge)されます。
どんなときに使用するのか
リモートリポジトリの確認とともに、作業中のブランチに直接マージさせたいときに使用します。
メリット
- 変更内容の確認と同時にマージもできるため作業がスムーズになる
デメリット
- 自動的に変更内容がマージされるため、コンフリクトが発生しやすくなる
使用例
git pull origin ブランチ名 // 特定のブランチを取得・取り込み
git pull origin // リモートから全てを取得・取り込み
git pull --all // 全てのリモートから取得・取り込み
git pull --rebase origin main // リベースして取得・取り込み
結論
安全に作業を進めるならfetch
すぐに同期して作業をはやく進めるならpull