🙄

gitで効率化するテクニック

に公開

前段
Gitは開発現場で欠かせないバージョン管理システムですが、毎回のコマンド入力が面倒だったり、履歴の整理が難しったりします。
そんなとき、Gitの便利なオプションやコマンドを活用することで、作業を効率化し、無駄な操作を減らせます。
今回は日常的なGit操作を高速化し、トラブルの手間を省く4つのテクニックをTipとして紹介します。

想定読者
初心者:基本的なGit操作はできるが、エイリアスなどを活用していない開発者。

  • git --version
    git version 2.37.2.windows.2

  • git alias
    Gitのエイリアスを活用すれば、長いコマンドを短縮し、作業スピードを向上できます。
    短縮したもので用意できる
    git config --global alias.clip-hash '!git rev-parse --short=7 HEAD | clip'

https://git-scm.com/book/ja/v2/Git-の基本-Git-エイリアス

  • git bisect
    バグがいつのコミットから発生したかを効率的に特定できます。二分探索なので手作業で辿るより小町的にポイント高いです。

バグが混入したコミットを効率的に切り分ける
git bisect start <bad-commit> <good-commit>
bad-commitからstart-commitのコミットを二分探索で検査していける
正しければgit bisect good
不正であればgit bisect bad
終わったらgit bisect reset
testにインクリメントしていきたかったところ途中でworldが混入した場合

https://git-scm.com/docs/git-bisect

  • git commit —amend —no-edit
    直前のコミットにファイルを追加し忘れた、ファイルの修正に漏れがあった場合、新しいコミットを作らずに修正できます。

amendとは修正するの意味、コミットしたが修正に漏れがあった場合に便利
コミットメッセージを変更せずに内容の変更だけを更新できる
<修正する> git add . git commit -m "hello, world" // テキストファイルのデータをhello, worldで保存したつもりがhello,で保存していた <修正する> git add . git commit —amend —no-edit // コミットメッセージは変えずにテキストファイルのデータをhello, worldに変更する

  • git worktree
    ブランチを頻繁に切り替えながら作業するのが面倒
    1つのリポジトリで複数のワークツリーを管理し、平行作業が可能。

注意点としてマウントするディレクトリは親ディレクトリ配下にするなど工夫すること。
一つ目のワークツリー内に作ると差分として表示されてややこしいため。

1つのリポジトリに複数個のワークディレクトリをチェックアウトする。
高頻度でブランチを切り替えるときに便利。特に片方で変更があった場合、git stashで変更内容を一時退避するなどがあると一層面倒。一度に複数個チェックアウトすることで効率化できる。

hello, worldのデータがあるtestデータをそれぞれのブランチで以下に変更する場合
(feature1) > hello, feature1
(feature2) > hello, feature2

階層ごとに見てるブランチが違う
git worktree add ../<紐づけたいディレクトリ> <ブランチ名>

feature2で変更してもmasterのディレクトリには影響しない


https://git-scm.com/docs/git-worktree

まとめ
普段使うコマンド以外に調べてみると以外と便利なコマンドがあったので紹介しました。
これらのコマンドも活用することで日々の開発がよりスムーズになると思います。

Discussion