Git Pull
最終更新
git pull は、現在のブランチをそのリモートの最新コミットで更新します。内部では、変更をダウンロードするために git fetch を実行し、続いてそれらを統合するために git merge を実行します。つまり git pull = git fetch + git merge です。マージコミットを作る代わりにローカルコミットを上に再適用するには --rebase を追加します。
これらをターミナルプレイグラウンドで試してみましょう。ブラウザ上の本物のシェルで、インストールは不要です。
構文
| Command | What it does |
|---|---|
git pull | 現在のブランチのリモートを取得してマージする |
git pull origin main | リモートから特定のブランチを取得する |
git pull --rebase | 取得してから、あなたのコミットを上にリベースする |
git pull --ff-only | fast-forward できる場合のみ取得する(マージなし) |
git pull --no-rebase | rebase がデフォルトでも強制的にマージする |
よくあるケース
| Goal | Command |
|---|---|
| ブランチの最新を取得する | git pull |
| 履歴を線形に保つ | git pull --rebase |
| 競合が発生した pull を中止する | git merge --abort |
| ローカルコミットを破棄してリモートに合わせる | git fetch の後 git reset --hard origin/main |
git pull のよくある質問
git pull は実際に何をしますか?
現在のブランチについてリモートから最新のコミットをダウンロードし、ローカルブランチに統合します。これは2つのコマンドの短縮形です。
git fetch(ダウンロード)に続いて git merge(統合)です。設定すれば、マージのステップは代わりにリベースになります。git pull と git fetch の違いは何ですか?
git fetch はリモートの変更をダウンロードしてリモート追跡ブランチを更新するだけで、作業ブランチには触れません。git pull はその fetch を行い、続いて変更を現在のブランチにマージします。まず受信した変更を確認するには fetch を、1ステップで取得して統合するには pull を使いましょう。git pull --rebase とは何で、いつ使うべきですか?
git pull --rebase はリモートのコミットを取得し、マージコミットを作る代わりに、あなたのローカルコミットをそれらの上に再適用します。履歴を線形に保つため、多くのチームがこれを好みます。まだプッシュしていないローカルコミットがあり、pull のたびにマージコミットが作られるのを避けたいときに使いましょう。git pull の後の競合はどう解決しますか?
ローカルとリモートの変更が重なると、pull はマージ競合を引き起こすことがあります。競合したファイルを開いてマークされた部分を解決し、それらを
git add してから git commit(マージの場合)または git rebase --continue(リベースの pull の場合)を実行します。取りやめたい場合は git merge --abort または git rebase --abort を実行してください。これをオンラインで練習できますか?
はい。ターミナルプレイグラウンドを開けば、ブラウザ上の本物のシェルで
git pull を実行でき、インストールは不要です。Coddy の無料のインタラクティブな Git コースでも、リモートの扱い方を段階的に学べます。