メインコンテンツまでスキップ

リモートの最新の状態を取得しよう

ダウンロードする前に、リモートの状態を確認する

ブラウザの「更新ボタン」と同じ「フェッチ」

Git Graphの以下のボタンを押してください。 表示が更新され、リモートの状態が反映されます。

この「表示の更新」をGitでは「フェッチ」と言います。

フェッチボタンは比較的色々なところに置かれていますが、どれを押しても同じです。

画像

頻繁にフェッチしましょう

実はVSCodeでは、「ソース管理」タブを選択したときなど、各所で自動でフェッチがされています。

フェッチをして初めて、リモートリポジトリの変化に気づけるので、ウィンドウが開きっぱなしであったり、ネットワークが不安定であったり、何か気になることがあれば、気軽にボタンでフェッチを実行しましょう。

なぜフェッチのステップが要るのか?

前置きでも少し触れましたが。Gitの「コードが破壊されない安全機能」の一つに、「分散型データ管理」を採用しているという点があります。

レッスンの進行上、GitHubがクラウド上のバックアップのように、もしくはリモートかローカルかどちらかが優先されるべき「正のリポジトリ」というような印象になっているかと思いますが、それは運用者が決めることであり、Gitのシステム的には、どれかのリポジトリが正になるというような制約はありません。

つまり、ローカルリポジトリ、リモートリポジトリに関わらず、すべての同じ派生のリポジトリは、それぞれがバックアップとしての役割を担っている状態です。

どのリポジトリ(が持っているブランチ)が最新であるかは、比較して判断する必要があります。そのためのフェッチです。

あ!リモートリポジトリを壊した!

と、思ったら、関係者全員に聞こえる場所(グループチャット等)で、「たすけて!!」と叫びましょう。

他の誰かのローカルリポジトリから、リモートリポジトリを復元すればスピード解決するかもしれません。

意図しないプッシュをしてしまってリモートの状態をおかしくしてしまう。ということは、導入初期には起こしがちです。

チームリーダーは特に、フェッチをせずにプルをしてしまうことは避けましょう。

プッシュとプルが両方必要と検出されるパターン

ブランチは、派生元が後で変更されることがあります。

そういう時系列で解決できない変更があった場合、プッシュとプルが両方必要と検出されます。

それは、コミットの時系列で衝突が起こっていると言えます。

(もちろん普通に衝突もあり得る)

こうなった場合の解決方法は、リベースしてフォースプッシュになりますが、これは後ほど解説します。

画像