Sourcetreeの使い方メモ

※この記事は徐々に更新していく可能性があります。

ちょくちょくSourcetreeの使い方について質問されることが多い。

極めて個人的な考えなのだけど、CLIでGit操作を頑張るよりも、GUIでGit操作をしたほうが間違いが少ないと考えているので、Sourcetreeなどのアプリを使うことをおすすめしている。

もちろんCLIでも良いのだけどネ。

Sourcetree

ATLASSIANの製品。

無料で使える割には高性能で安定しているように思う。

僕はここ5年ほどずっと愛用していて、困ったことはあまり※ない。

しかも設定を変更するだけで日本化も簡単。

下記からダウンロード可能。

執筆時点のVersionは 3.0.1 を利用。

ja.atlassian.com

※ものすごく大きなサイズのファイルを参照すると(indexすると)固まる事があるので、その場合だけCLIのgitを使っている。

アカウント設定

⌘, → アカウントタブを選択。

f:id:omiend:20190115111737p:plain

「追加/Add...」ボタンを選択。

GitHubを選択。

「接続アカウント/Connect Account」を選択。

Webブラウザが開くので、GitHubにログインする。(あるいはログインしていれば自動的にSourcetreeに戻る。

SSHを選択。

「保存/Save」を選択。

f:id:omiend:20190115112038p:plain

GitHubへのSSHログイン設定をしていれば、これだけでログイン完了。

f:id:omiend:20190115112142p:plain

clone

⌘+nリポジトリ一覧を開く。

「リモート/Remote」タブを選択。

(ログインに成功していれば)プライベートリポジトリー含めて一覧されるので、目的のリポジトリーを選択。

ディレクトリを選択してClone

f:id:omiend:20190115115937p:plain

git操作

f:id:omiend:20190115121433p:plain

操作でやることといえば、

  • create branch
  • commit
  • push
  • fetch
  • pull
  • checkout
  • merge (merge commit)

このくらい。

一つづつ説明していく。

create branch

f:id:omiend:20190115121251p:plain

現在チェックアウトしているbranchから、子branchを作成する。

例えば、masterからdevelopを作成する場合はこのようにして「Create Branch」ボタンを選択する。

f:id:omiend:20190115120545p:plain

commit

f:id:omiend:20190115143745p:plain

f:id:omiend:20190115145047p:plain

変更箇所をindexに追加し、変更内容を記載して「Commit」を選択。

Commitと同時にリポジトリへPushする場合、「Push changes immediately to origin/branch-name」をチェックする。

f:id:omiend:20190115145051p:plain

push

f:id:omiend:20190115143828p:plain

f:id:omiend:20190115145556p:plain

Pushするbranchを選択する。

「Ok」を選択する。

f:id:omiend:20190115145620p:plain

fetch

f:id:omiend:20190115143837p:plain

fetchはリモートの変更内容をローカルにダウンロードするイメージ。

f:id:omiend:20190115150911p:plain

f:id:omiend:20190115150931p:plain

f:id:omiend:20190115151018p:plain

pull

f:id:omiend:20190115143905p:plain

現在チェックアウトしているbranchの変更を取り込む。

f:id:omiend:20190115151032p:plain

f:id:omiend:20190115151110p:plain

f:id:omiend:20190115151143p:plain

  • Commit merged changes immediately
  • Include messages from commits being merged in merge commit
  • Create new commit even if fast-forward merge
  • Rebase instead of merge (WARNING: make sure you haven't pushed your changes)

f:id:omiend:20190115151359p:plain

checkout

作業するbranchを変更する。

左のbranch一覧から、チェックアウトしたいbranchを選択。

f:id:omiend:20190115150028p:plain

f:id:omiend:20190115150038p:plain

merge (merge commit)

f:id:omiend:20190115143923p:plain

現在のbranchに、他branchの変更を取り込む。

基本的に親branchの変更を、作業branchに取り込む際に行う。

逆に、子ブランチを親branchにマージする際は、必ずPull Requestを行うようにし、何故当該の変更行われ、そして親branchにマージされたのかが後で追えるようにする。

【TODO】omiendの会社の「チーム開発におけるGitブランチの運用」としてまとめる。

f:id:omiend:20190115151851p:plain

「Merge」を選択。

現在のbranchに対してマージしたいbranchを選択。

「OK」を選択。

以下はお好みで。ただし、基本的に「すぐにマージした変更をコミットする/Commit merged changes immediately」くらいしか使ったことがない。

  • すぐにマージした変更をコミットする/Commit merged changes immediately
  • マージコミットでマージされるコミットからメッセージを読み込む/Include messages from commits being merged in merge commit
  • fast-forward マージであっても新たにコミットを作成する/Create a commit even if merge resolved via fast-forward
  • マージではなくリベースする(警告:変更をプッシュしていないことを確かめてください)/Rebase instead of merge (WARNING: make sure you haven't pushed your changes)

f:id:omiend:20190115152004p:plain

マージ完了。

f:id:omiend:20190115152155p:plain

尚、上記は競合/Conflictが発生している状態。

競合/Conflictの解消

競合/Conflictの解消はエディターなどで行う(あるいはお好きな競合解決ツール)。

f:id:omiend:20190115152539p:plain

競合/Conflictを解決した後は、通常のCommitの手順を踏めば良い。

f:id:omiend:20190115152608p:plain

競合解決結果をindexするのを忘れずに。

f:id:omiend:20190115152950p:plain