#11 変更履歴をプルする。

次は変更履歴のプルについて見ていきます。
ローカルリポジトリとリモートリポジトリの間に変更履歴の差分がある場合、その変更履歴をローカルリポジトリへ引き込む事ができます。

※CBC_Gitリポジトリで作業して下さい!
①前項で作成された「study」ブランチがリモートリポジトリにアップロードされているので、チェックアウトする。
ここまでの学習で、CBC_Gitリポジトリではまだ一度もブランチを作成していませんが、
リモートリポジトリにはCBC_Git2で作成されたstudyブランチが存在します。前項でstudyブランチを作成し、変更内容をプッシュしているからです。
リモートリポジトリ上に存在するブランチは、そのリポジトリと紐付いている全てのローカルリポジトリと共有する事が可能です。

studyブランチにチェックアウトし、ローカルリポジトリへ引き込んでみましょう。
そのままチェックアウトボタンをクリックで問題ありません。
ここでは、「リモートリポジトリ上に存在する「study」ブランチをコピーしたものを、ローカルリポジトリ上に「study」という名称のブランチで作成する」という設定をしています。
CBC_Gitリポジトリ上にもstudyブランチが作成され、チェックアウトまで行いました。study.txtも最新のバージョンになっているはずです。

②studyブランチ上でテキストファイルを追記し、コミット&プッシュ
3行目を追記し、コミット&プッシュまで行いましょう。

プッシュまで完了すると、表示が下図の様になるはずです。
・sourcetree
・GitHub


※CBC_Git2リポジトリで作業して下さい!
ローカルリポジトリ「CBC_Git(先ほどまで作業してたリポジトリ)」からプッシュされた変更履歴を、
ローカルリポジトリ「CBC_Git2」でプルします。
CBC_Git2リポジトリ操作画面を開いた際には、上図の様な表示になっているはずです。
※この様な表示に変わらない場合は、画面上部にある「フェッチ」ボタンをクリックしてみて下さい。
フェッチ」=リモートリポジトリ上の変更履歴の状態を確認します。確認するだけなので、変更内容は取得しません。

表示を見るとわかる通り、ローカルリポジトリとリモートリポジトリそれぞれのstudyブランチでは、変更履歴に1コミット分の差が出ています。
プルして、リモートリポジトリが保持している変更履歴を取り込みましょう。
特に設定を変更する必要はありません。
OKボタンをクリックする前に確認することは
  • プルする元のリポジトリ:originになっていること
  • プルするリモートのブランチ:studyになっていること
上記二点は必ず確認しましょう。
オプションの4項目については、一番上の項目にだけチェックがついていれば大丈夫です。
ローカルリポジトリのstudyブランチと、リモートリポジトリのstudyブランチが同じ高さに表示されていますね。
つまり、現状このローカルリポジトリとリモートリポジトリのstudyブランチには差分が存在しない、という事になります。
テキストファイルの内容も、CBC_Gitリポジトリで変更したものにちゃんと変わっています。

※「プル」=「フェッチ」+「マージ」
今回学んだ「プル」という作業は、Gitというシステムから見ると、「フェッチ」と「マージ」という作業を同時に行なっている事になります。
「フェッチ」は先述した通り、リモートリポジトリ上の状態確認を行う作業です。確認を行うだけで、変更履歴自体の取得は行いません。
「マージ(=併合する、合併する)」は文字通り、変更履歴を合併し、取り込む作業です。
ローカルリポジトリ上で認識している変更履歴を選択し、その内容を取り込みことができます。

では、「プル」を実行した場合どの様な作業が行われているかと言うと、
  1. 「フェッチ」を実行し、リモートリポジトリの状態確認を行う。リモートリポジトリ上でどんな変更が行われているかを取得してくる。
  2. 「マージ」を実行し、前段で取得したリモートリポジトリの状態から一番最新の変更履歴をマージする。
というような作業が実行されています。

リモートリポジトリに上がっている変更履歴を取得する際、基本的にはプルで事足りることがほとんどです。
しかし、場合によってはフェッチやマージを単体で実行するような場面もあり得るので、知識として覚えておくと良いでしょう。
コピーしました
RSS https://cbc-study.com/rss.xml
質問などあればSlackで