Web事業部_クリエイティブ
Web事業部_クリエイティブ
2015.11.26

【Git入門】基本操作の次に覚えておきたい便利な機能5選

ヤスタカ

はじめまして。バックエンドエンジニアのヤスタカです。
長野の野尻湖オフィスでのバックエンドエンジニアとして採用されたのですが、野尻湖オフィスの冬の厳しさに今から戦々恐々としています。

さて、みなさんはGitを普段から使いこなしてますか?

リモートからクローンしてきて、コミット、プッシュ、プルリクなどの基本的な操作はとりあえず覚えたけど、それ以上のことはよくわからないし……でも、とりあえずなんとかなってるし。。。

そんなGit初心者の方に向けて、知っておくと便利な小ワザをご紹介します。今回はGitクライアントの「SourceTree」を使ったやり方と、コマンドラインだったらこんなコマンドだよというのを合わせてご紹介したいと思います。
主にMacでの操作方法を記載していますが、SouceTreeはwindows版もありますので、適宜読み替えていただければと思います。

1. 一時的に変更を退避する(スタッシュ)

  • まだコミットはしたくないんだけど、一時的にブランチを切り替えたい。
  • とりあえずファイルにおこなった変更を元に戻したいけど、変更した内容は一時的に残しておきたい。

そんなときはスタッシュという機能を使って、変更を一時的に退避させておきましょう。

SourceTreeでやってみる

スクリーンショット_2015-10-30_6_52_08

Uncommitted changes(未コミットの変更)がある状態で、スタッシュのアイコンをクリックします。

 
wordpress__Git_

スタッシュする変更に好きな名前をつけてOKをクリック。

 
git_03

一時退避エリアに先ほどスタッシュをした変更が保存され、Uncommitted changesがなくなります。
これでファイルは変更前の状態に戻りました。もし再度スタッシュに保存した変更を適用したい場合は、スタッシュ名をダブルクリックすれば変更を適用できます。

コマンドラインでやってみる

コマンドラインでの方法はこちらです。

スタッシュする

git stash save "スタッシュの名前"

git stashだけでもスタッシュできます。その場合はGitが適当な名前をつけてくれます。

スタッシュのリストを確認する

git stash list
結果:
stash@{0}: On 雨ニモマケズ: スタッシュ2
stash@{1}: On 雨ニモマケズ: スタッシュ1
stash@{2}: On 雨ニモマケズ: 雨ニモマケズ

スタッシュされているもの一覧。

スタッシュしたものを適用するとき

git stash apply @{0} ←applyの後にgit stash listで確認した番号を入力

git stash applyだけだと最後にスタッシュしたものが適用されます。
スタッシュを適用してスタッシュ自体は削除したいときはgit stash pop。

2. ブランチやコミット間の差分を確認する

各ブランチ間やコミット間でどのファイルのどこが変更されたのか確認したい場合ってありますよね。
そんなときも簡単に差分、見れちゃいます。

SourceTreeでやってみる

git_04

コマンドボタンを押しながら2つのコミットを選択すると、そのコミット間に変更されたソースが全て表示されるようになります。

コマンドラインでやってみる

コマンドラインでの方法はこちらです。

ブランチ間の比較

git diff develop feature ←比較したいブランチ名を入力

コミット間の比較

git diff コミットID コミットID ←比較したいコミットIDを入力

3. 間違えちゃったコミットを取り消す

よし、できた!コミットだ!と意気揚々とコミットをした後で、あ、、、ここのデバッグコード消し忘れてた。。。
なんてことけっこうありますよね。そんなときは直前におこなったコミットを取り消して修正しましょう。

SourceTreeでやってみる

reset_01

まずはSouceTreeの戻したいコミットを選択して右クリック。
メニューから「このコミットまで(ブランチ名)を元に戻す」を選択。

 
reset_02

モードを選択するウィンドウが出てくるので、Mixedを選択。

 
reset_03

するとUncommitted changesができて、コミットが取り消されます。

コマンドラインでやってみる

git reset コミットID --mixed

これだけです。
ちなみにsoft、mixed、hardの違いはこんな感じです。

  • soft: 修正した変更は残したままで、かつステージに上げたまま
  • mixed: 修正した変更は残す、でもステージには上がってない状態
  • hard: 修正した変更自体をなかったことにする
  • 1
  • 2