SourceTreeでローカルリポジトリにないブランチを取得する方法 #わかばちゃんと学ぶ Git使い方入門
IT漫画家の湊川あい(みなとがわ・あい)です。
拙著『わかばちゃんと学ぶ Git使い方入門』に関して、出版社さんを通じて読者さんから質問があったので本記事でお答えします。
読者さんからのご質問
P.131
プルするときにブランチを指定しますが、ローカルにないブランチをプルする場合はどのように作業すれば良いのでしょうか。
「プルするリモートブランチ」では新しいブランチを選択できますが「次のブランチにプル」は固定で、ローカルでアクティブになっているブランチが勝手に指定されています。(そもそも新しいブランチ云々を意識せずに、最新の状態になってくれると有難いのですが)
リモートリポジトリに存在するブランチは「フェッチ」でまとめて取得できる
リモートリポジトリ上のブランチを、ローカルリポジトリにも持ってきたいというご質問ですね。
ズバリ「フェッチ」でまとめて取得できます。
SourceTreeでの手順
1、上部メニューから「フェッチ」をクリックします。
2、「すべてのリモートからフェッチ」「リモートで削除された追跡ブランチを取り除く」にチェックマークを入れて、「OK」ボタンをクリックします。
3、メニューの「リモート」欄を開いてみてください。
他の人が追加した、リモートリポジトリのブランチ一覧が反映されているはずです。
これらのブランチは、ローカルブランチと見分けがつくように「origin/○○」という形で表現されています。これがリモート追跡ブランチです。
リモート追跡ブランチをローカルブランチ化して、自由にコミット等の操作ができるようにしたいですよね。
そのためには、任意のリモート追跡ブランチをダブルクリックします。
この例だと「origin/chap-mottox2」という名前のリモート追跡ブランチをダブルクリックします。すると……
4、次のような、確認のポップアップが開きます。
リモート追跡ブランチ「origin/chap-mottox2」にチェックアウトして、新規ローカルブランチ「chap-mottox2」を作りますか?
という確認です。
「チェックアウト」ボタンをクリックします。
5、おめでとうございます!
リモート追跡ブランチを元にして、新規ローカルブランチが作られました。
フェッチのおさらい
フェッチについては、書籍『わかばちゃんと学ぶ Git使い方入門』で解説しているとおりですが、こちらの記事でも改めておさらいしておきます。
▼今までは、わかばちゃんは単純にこういうイメージでpush・pullをしていましたが…
▼実はこういう構造!
単語の整理
・リモートブランチ
リモートリポジトリの中にある
・リモート追跡ブランチ
ローカルリポジトリの中にある
リモートブランチをローカルにミラーリング(コピー)しただけのもの
読み取り専用
・ローカルブランチ
ローカルリポジトリの中にある
普段コミットするブランチ
……つまり「リモートリポジトリ1つ・ローカルリポジトリ1つ」という状況だと、同じ名前のブランチが3つ存在するわけです。
例:
・リモートブランチ: master
・リモート追跡ブランチ: origin/master
・ローカルブランチ: master
これら3つのブランチは、常に同じ状態になっているのが理想です。
プルの正体は フェッチ+マージ
この2工程をまとめてやってくれるのがプルです!
今回のケースですと、マージしようにも、ローカルブランチにその名前のブランチが存在しないんですよね。
おそらくそれで戸惑ってしまったかと思います。
その場合は、先ほどの手順でリモート追跡ブランチにチェックアウトすることで、めでたく同じ名前のローカルブランチを作成できます。
おわりに
さて、疑問点は解決できましたでしょうか?
もしわからない点があればできる限りお答えしたいと思っておりますので、お気軽にご質問くださいね。
無料で読めるWeb連載
無料で読める、わかばちゃんのWeb連載はこちらにまとめています。
SourceTreeに慣れてきたかたのための「マンガでわかるGit 〜コマンド編〜」も現在16話まで公開中です。
いろいろなわかばちゃんシリーズ
わかばちゃんが登場する、マンガで楽しく技術が学べるコンテンツは、サーバー監視、RubyやDockerなど継続的に横展開しておりますので、気になる分野がありましたらぜひご覧くださいね。
個人制作誌(コミケや技術書典など、イベントなどで頒布したもの):
商業誌(本屋さんやAmazonでご購入いただけるもの):
『わかばちゃんと学ぶ』シリーズ一覧は、湊川あいのAmazon著者ページをご覧ください。
更新情報はTwitterで配信中です!
それでは、また。