Snippets

Akiko.T advent-calendar2016-atlassian-1206

You are viewing an old version of this snippet. View the current version.
Revised by Akiko.T 5f0aa2a

はじめに

みなさまこんにちは。気がつけはもう6日ですね! この投稿は Atlassian Advent Calendar 2016 の6日目の記事です。 昨年に引き続きの参加ですので、ふたたび Bitbucket Snippets を利用してみます :)

平素は仕事でも個人でもGitのソースを扱う時はSourceTreeにお世話になっております。 おかげさまで、なかなかコマンドラインでのgitの操作を覚えられないのですが、なんとかやってこれています。わたしにとってはAtlassian製品シリーズとしては付き合いの長い製品です。

SourceTreeも進化してます!

では、クリスマスツリーじゃなくって(スミマセン)、SourceTreeのお話に。



個人的によく使う機能

あまりGitを使いこなせていないので恐縮なのですが、通常のコミットに加えてこちらをよく使っています。

  • stash (とにかくGitになれてないうちはstashしまくっていました)
  • rebase (分岐元を切り替えるほう)
  • rebase -i (コミット入れ替えたりまとめたりするほう)
  • Bitbucket / Github両方扱いたいときはほぼ

rebaseはGUIで実施できるので、まずは細かくコミット、あとから (リモートにpushする段階で) まとめる際によく利用しています。

rebaseのサンプル画像

rebase -i (対話的rebase)を実行すると、このような感じになります。

こんな感じ

binary diffも見れますよ

さて、GitHubではバイナリファイル(画像)の場合は、Webからbefore/afterが確認できるので便利ですよね。

「そういえばSourceTreeのようなGit clientはどうなんだろう?」と思って手元のSourceTreeで確かめて見たところ、前後での比較のプレビューは表示されない...。 ちょっと気になって、Atlassian Answers を覗いてみたところ、やっぱりまだできないっぽい?

上記のトピックでは、「外部diff toolを使ったらどう?」というコメントがあったので、せっかくなので設定してみることにしました。

外部diff toolを使ってみる

選んだ外部diff toolは、IntelliJ IDEA です(^^;

そもそもIntelliJ自体、ちゃんとGitを始めリポジトリ操作用の機能を持っているので、「わざわざGitのためだけにSourceTreeを使う必要はないじゃないか!」と怒られてしまいそうですが、この点に関してはわたしはSourceTreeに慣れきってしまっているので譲れません...。 とりあえずどうやって設定するかをご紹介します。

設定方法:

  • 「環境設定」から、「Diff」のタブを選ぶ
  • 差分表示ツールで「カスタム」を選択

この例ではIntelliJ を設定しています。入力内容は以下の通り。

  • コマンドにIntelliJのフルパスを指定
  • /Applications/IntelliJ\ IDEA.app/Contents/MacOS/idea (わたしの場合)
  • 引数にはローカルのコミット同士での差分、リモートとの差分が表示できるように以下のように設定
  • diff $(cd $(dirname "$LOCAL") && pwd)/$(basename "$LOCAL") $(cd $(dirname "$REMOTE") && pwd)/$(basename "$REMOTE")

実際にやってみた際のキャプチャはこの通りです。

こんなかんじ

また、.gitconfigに書き出された設定は、このような感じになります。

# .gitconfig側
[difftool "sourcetree"]
        cmd = /Applications/IntelliJ\\ IDEA.app/Contents/MacOS/idea diff $(cd $(dirname \"$LOCAL\") && pwd)/$(basename \"$LOCAL\") $(cd $(dirname \"$REMOTE\") && pwd)/$(basename \"$REMOTE\")
        path =

いつのまにかside by side diffができるようになってた!

さて、「IntelliJで画像のdiffが見れるようになった!」と喜んでいたのですが、さぼっていたSourceTreeのバージョンを上げると... いつの間にか、ちゃんと差分表示されるようになっていました!

こんな感じ

commit logのフォントを変えてみる

最近バージョンアップさせるまで気がつかなかったことの一つに、コミットログのフォントのカスタマイズがありました。 こちらも、せっかくですので変更してみました。

こんな感じ

最近これまたよく使う、「うずらフォント」にしてみました。 ちょっと気分が和みますね。

まとめ

まだまだ色々あるのですが、まずはこれくらいで....

なんだかんだで、SouceTreeとは長いお付き合いなのですが、個人的にもSourceTreeはGitの普及にすごく貢献してるんだろうな...と思っています。 また、使い始めた当初からくらべても、日本語対応も進みましたし、動作も安定してきた感じがします。

本当に、感謝、感謝です!

ちなみに、SourceTreeの翻訳状況ですが、こちらから参照できます。

Windows版は100%, Mac版は96%くらいの状況です。 バージョンアップが頻繁なMac版のほうが、都度キーワードが追加されるためちょっとだけ未対応のものがあるようですね。

お礼を兼ねて、翻訳に協力できたらいいなと思っていますので、もし参加できる機会ができたら、またご報告したいと思います!

[core]
        excludesfile = /Users/akiko_pusu/.gitignore_global

[diff]
        tool = intellij

[difftool "intellij"]
        cmd = /Applications/IntelliJ\\ IDEA.app/Contents/MacOS/idea diff $(cd $(dirname \"$LOCAL\") && pwd)/$(basename \"$LOCAL\") $(cd $(dirname \"$REMOTE\") && pwd)/$(basename \"$REMOTE\")

[mergetool "sourcetree"]
        cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
        trustExitCode = true
[user]
        name = Akiko Takano
        email = akiko.pusu@gmail.com
[difftool "sourcetree"]
        cmd = /Applications/IntelliJ\\ IDEA.app/Contents/MacOS/idea diff $(cd $(dirname \"$LOCAL\") && pwd)/$(basename \"$LOCAL\") $(cd $(dirname \"$REMOTE\") && pwd)/$(basename \"$REMOTE\")
        path = 
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.