すなばいじり

はてなブログを使って、トンピーを揃えるまで止めないブログ。ふっくらかわいい。

SourceTreeでリモートのリポジトリと同期する

正確なタイトル:Windows版 SourceTree のカスタム操作を使ってリモートのリポジトリの main や master ブランチと同期する

 

こういうこと。

Windows版 SourceTree のカスタム操作を使ってリモートのリポジトリと同期する



何というか ghq でも使えば良いのでは?という話ですが、SourceTree のカスタムコマンドでやっていくお話。

github.com

 

 

どうするの?

今回のエントリーでは、バッチファイルで対応するやつ。

想定している環境は、

  • どこかのリポジトリを fork したものが自分の GitHub アカウントにある
  • どこかのリポジトリは upstream という名前を与えてある
  • fork したものは origin という名前になっている(こちらは基本的に origin になっている)
  •  SourceTree 内臓 Git 以外にも Git for Windows が利用できる状態

 

準備

自分の PC の git 管理外となる場所にツール置き場用のフォルダを作成する。
(リポジトリのフォルダに入れない というお話)

gist にベースとなるバッチファイルを用意したので各自持ち帰る。

gist.github.com

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 ブランチで作業してる時に、そのまま更新したい時あるじゃないですか。
スタッシュすら面倒な時!それです。

 

面倒なことを言わずにたいこを叩いてくれる熊。