正確なタイトル:Windows版 SourceTree のカスタム操作を使ってリモートのリポジトリの main や master ブランチと同期する
こういうこと。
何というか ghq でも使えば良いのでは?という話ですが、SourceTree のカスタムコマンドでやっていくお話。
どうするの?
今回のエントリーでは、バッチファイルで対応するやつ。
想定している環境は、
- どこかのリポジトリを fork したものが自分の GitHub アカウントにある
- どこかのリポジトリは upstream という名前を与えてある
- fork したものは origin という名前になっている(こちらは基本的に origin になっている)
- SourceTree 内臓 Git 以外にも Git for Windows が利用できる状態
準備
自分の PC の git 管理外となる場所にツール置き場用のフォルダを作成する。
(リポジトリのフォルダに入れない というお話)
gist にベースとなるバッチファイルを用意したので各自持ち帰る。
4行しかないので手元に新しいバッチファイルを作って、その中に書き込んでも良い。
※解説は後程
SourceTree のカスタムコマンドを登録する。
ツール > オプション > カスタム操作
メニュー表示名は自分が分かり易いものを入力。
今回は main ブランチを更新したいので「main ブランチの更新」とする。
実行するスクリプトには、準備したバッチファイルを指定。
パラメータには $REPO を入力。
詳細な出力にチェックを入れておけば、何をしているかが見えます。
SourceTree の樹形図で右クリックすると、カスタム操作の一覧が出てくるので、選択する。
enjoy :)
バッチファイルの解説
1行目。
@echo off
バッチファイルの出力制御の呪文みたいなやつ。無くても動く。
2行目。
cd %1
SourceTree で指定したパラメータ「$REPO」の中身を追加しつつ、フォルダの移動をしている。
特定のリポジトリのみで使う場合は、パラメータを使用しないで直接フォルダのパスに置き換えても良い。(その場合は SourceTree に登録する必要もない。無いですね。)
3行目。
git pull upstream main:main
どこかのリポジトリの main ブランチを
自分のPCにあるローカルリポジトリの main ブランチにpullする。
4行目。
git push origin main:main
自分のPCにあるローカルリポジトリの main ブランチを
自分の GitHub アカウントにある fork したリポジトリの main ブランチにpushする。
ブランチが main ではなく master ですがどうすれば?
バッチファイルの内容を main から master に変更しましょう。
バッチファイルとカスタム操作を2個作っても良いのですよ。
何故ブランチ名を指定しているの?
dev ブランチで作業してる時に、そのまま更新したい時あるじゃないですか。
スタッシュすら面倒な時!それです。
面倒なことを言わずにたいこを叩いてくれる熊。