gitコマンド4選 add,commit,pushしか使わないあなたへ

アイキャッチ画像

目次

はじめに

gitでトピックブランチを切って最初にpushする時に、カレントブランチ名を打つのがとにかくダルい水野です。

今回はエンジニアなら使いこなせないと辛いgitの記事です。
add, commit, push しか使わないgit初心者のあなたに、僕が便利だと思う基本のコマンドを紹介します。

目次

なぜadd,commit,pushしか使わないのか

チーム開発をしていないからでしょうね。

僕は学生の頃、長いこと add, commit, push しか知りませんでした。
というより、他のコマンドを使いたいケースがあまりありませんでした。

ブランチは個人開発ならmasterだけで事足りますし。
個人のちょっとしたサービスでもやらかした時の修復が面倒なので、ブランチを切った方がいいとは思いますが。

この記事で紹介するコマンドのほとんどを、僕は社会人になってからガッツリ使い始めています。
僕の学生のころのレベルがとにかく低かったです…(今も低い)。

grep

これないと無理

1つめはLinuxのコマンドでも有名なgrepです。
grepを知らない人に軽く説明すると、ファイル内のテキストを検索するコマンドです。

プロジェクトに入ったばかりでソースコードを把握していない頃は頻繁に使うでしょう。
僕は配属当初毎日何回も打ちまくっていました。
というかある程度慣れてソースコードを把握しても頻繁に使う、そんなコマンドです。

使い方は簡単

[code lang=text] git grep 検索したい文字列
[/code]

これでOKです。

例えば僕の開発メモ用リポジトリで使うとこんな感じになります。

git grep

 

基本コマンドとgitのgrepの違いは速さです。
git grepはリポジトリ内の除外ファイルを除いて検索するので超高速です。一瞬で終わります。

Railsのプロジェクトなら、.gitignoteで除外されているであろう/vender/bundle/log/などは検索しません。
当然AtomやVSCodeといったエディタ、RubymineなどのIDEの検索より早いです。

行番号はgit config --global grep.lineNumber trueを一度叩くか~/.gitconfigに以下を記載しておけばデフォルトで表示されます。

[code lang=text] [grep] lineNumber = true
[/code]

 

他にもパスやファイルの指定、正規表現などは当然使えます。
詳しくはググってください!

diff

これないと無理

2つめもLinuxのコマンドで有名なdiffです。
diffを知らない人に軽く説明すると、ファイル同士の比較(差分)です。

基本コマンドとgitのdiffでは結構違いがあります。
基本コマンドのdiffはファイルとファイルの差分ですが、gitのdiffは指定したブランチや特定コミットとの差分を表示します。

HEADとの差分がある状態で git diff を打ち込むとこうなります。

git diff

デフォルトはHEADとワークツリーの差分が表示されます。
変更があったファイルをaddすると表示されなくなりますが、--cachedを付けると表示されます。

特定のコミットの差分を表示したり、特定のブランチとの差分を表示するには以下のようになります。
コミットハッシュは一つだけ指定するとHEADとの差分、ブランチは一つだけ指定するとカレントブランチとの差分が表示されます。

[code lang=text] git diff コミットハッシュ
git diff ブランチ
[/code]

 

正直コマンドラインでは差分が見辛いので、SorceTreeなどのGUIクライアントを使った方が見やすいです。
オプションや設定次第で見やすいのでしょうが…

rebase

これはチーム開発じゃないと使う機会が少ないと思います。

rebaseはそのブランチの派生元ブランチを変更します。
例えばmasterブランチから切ったtopicブランチがカレントブランチとして

[code lang=text] git rebase hogehoge
[/code]

とすると、topicブランチはhogehogeブランチから切ったことになります。
これのなにがありがたいかと言うと、

  • 余計な差分が消える
  • コミットログが綺麗になる
  • コンフリクトが解消する

などがあります。

reabaseは使うまで理解しづらいので、コンフリクトが発生したり余計なコミットまで含まれているときに使ってみてください!

複数人のコミットが含まれているブランチでrebaseしてpush -fすると変なことになる可能性が高いので、おとなしくmergeにしておきましょう。

stash

ワークツリーのコミットされていない変更を一時退避します。

gitはコミットしていない変更があると、他のブランチにチェックアウトできないことが結構あります。
でも今すぐブランチを変えたい、そんなときにstashを使います。

stash-testブランチとhogehogeブランチがあり、git.mdというファイルで異なる変更があるとします。
stash-testブランチではまだその変更をコミットしていません。

このときstash-testブランチからhogehogeブランチにcheckoutしようとしても、エラーが出てできません。

git stash その1

 

ここでstashを使いましょう。
すると変更がなくなり(一時退避)、checkoutできるようになります。

git stash その2

 

git stash listでstashの一覧を表示することができ、git stash popで最新のstash(stash@{0})が復活します。
すると差分やステータスに再度表示されます。

git stash その3

stashはdropや対象stashの指定などが可能です。
ぜひ調べてみてください。

僕のメモもよかったら参考にしてください!

まとめ

gitで以下の4つのコマンドを使えるようになると捗ります。

  • grep
  • diff
  • rebase
  • stash

rebaseより先にstatusやcherry-pickを紹介すべきだったと今さら反省しております…
次の記事でご紹介します!

おわりに

リンクバルでは gitをバリバリ使いこなすエンジニアを絶賛募集中 です。ご応募お待ちしております!