現場でなんとなく使いがちなGit管理ツール「SourceTree」の使い方


きっかけ


2015/01/01にGit関係のこんな記事を公開。
スクリーンショット 2017-11-25 11.52.53.png


Git管理方法の具体的な解説は需要ある


もしかしたら使ってないかもしれない機能の紹介

  • なんとなくこう使ってる
  • なんとなく使えてるから問題ない

基本的な使い方


  1. ブランチ
  2. ステージング
  3. コミット
  4. プッシュ

これだけ出来れば基本は大丈夫


ありがとうございました


ではなくて…


もうちょっと詳しく知りたい


ですよね?


ブランチ


ブランチとは

  • それまでのファイル状態と全く同じコピーをまるごと作成
  • その中で作業すれば、間違っても取消し、やり直しが簡単。
  • うまくできたら本流に取り込める。

→ 取り消し、取り込みのコマンドがある!


取り消し = ブランチ削除


取り込み = マージ


全部消したくない、部分的にやり直したい


ですよね?


できます


ステージング


コミットするファイルを選択できる
だけではない!!

コミットする行単位での指定が可能!


普通はファイルの変更点全てをコミット or 破棄

スクリーンショット 2017-11-13 10.58.41.png


行を選択 → 選択した行をステージへ移動 で、選択した行だけコミット or 破棄

スクリーンショット 2017-11-13 10.58.52.png


部分的にコミット or 取り消しできる!


つまり

  • 余計な空行・変更をSourceTreeで取り消してコミット
  • 1ファイル上の複数箇所に渡る変更を分けてコミット

このようなことをする場合、エディタで編集する必要がない!


差分を操る


ファイル単位で取り消す場合

ファイルを右クリック→リセット

スクリーンショット 2017-11-13 11.16.29.png


だいたい右クリックしたらなんとかなる


ブランチのリセット1

コミットを選択して右クリック→ このコミットまで【ブランチ名】を元に戻す。

スクリーンショット 2017-11-22 11.23.26.png


ブランチのリセット2

Soft, Mixed, Hardから選択。

  • 差分はそのままにコミットをやり直したい場合はMixed。
  • 差分も履歴も全てなかったことにしたい場合はHard。
  • 今までの履歴と差分に手を付けずにコミットをやり直したい場合はSoft。

スクリーンショット 2017-11-22 11.31.36.png


該当の履歴の状態まで一気に戻せる


ファイル単位で戻したい場合は?


コミットまで戻す1

先頭のコミットの差分がこんな感じ

スクリーンショット 2017-11-22 11.15.19.png


コミットまで戻す2

履歴に表示されているファイル名の所で右クリック → コミットまで戻す

スクリーンショット 2017-11-22 11.15.37.png


コミットまで戻す3

選択したファイルの状態まで差し戻される(コミットはされない)

スクリーンショット 2017-11-22 11.16.10.png


スタッシュ


スタッシュ

一時退避コマンド。
現在の変更を全て一時的に退避する。

スクリーンショット 2017-11-21 22.27.42.png


ですが、我々は知っている


部分的にステージに移動する方法を!


そして、スタッシュの際、ステージされた変更を残すことが出来る


つまり2つの操作を組み合わせられそう


というわけで実例


複数行の差分があります

スクリーンショット 2017-11-21 22.25.18.png


「ここだけ使いたい」の1行のみステージング

選択した行をステージへ移動
スクリーンショット 2017-11-21 22.21.28.png

ステージ移動後
スクリーンショット 2017-11-21 22.35.20.png


スタッシュ

一時退避します。
この時、「ステージされた変更を残す」にチェックを入れる。

スクリーンショット 2017-11-21 22.24.09.png


ステージされた変更だけ残る

作業ツリーのファイル表示が消える。

スクリーンショット 2017-11-21 22.45.16.png

変更前との比較

スクリーンショット 2017-11-21 22.35.20.png


さらにスタッシュ

今回はチェックを付けずに一時退避。

スクリーンショット 2017-11-21 22.49.20.png


「ここだけ使いたい」のみの一時退避差分ができた

ここまでできたら、複数のブランチに対して、この変更をそれぞれ適用することが簡単にできる。

スクリーンショット 2017-11-21 22.26.05.png


差分の抽出、加工がエディタを使わずにできた


まとめ

  • 状況に応じた単位でのコミット、差し戻しを使うと作業を効率化できる。
  • 差分はエディタを使わなくても、SourceTree上で加工できる!
  • SourceTreeはファイルをコミットするだけではない!

自己紹介

スクリーンショット 2017-11-21 23.29.08.png

  • 名前:笹島大和
  • 職種:フロントエンドエンジニア
  • 会社:CBcloud

エンジニアの転職メモ

今年2月に公開。そこそこいいねが付いていたが、
10月に別記事で後日談を公開した所、Qiitaメルマガに載ったこともあり、閲覧数といいね数が急増する。

スクリーンショット 2017-11-21 23.21.54.png


ご静聴、ありがとうございました。