雛形書庫

An Unmoving Arch-Archive

Gitコマンド2023

今年は前年比でGitをよく使った一年であった。 いろんな使い方をするうちに困ったときのベストプラクティスが手元にまとまったので、ゆくゆくはこの記事を更新するつもりではあるものの、まずはその草稿として。

エイリアスをつける

公式的な解説いわく「Git の各コマンドをいちいち全部入力するのがいやなら、 git config でコマンドのエイリアスを設定することができます。」 ここに例示されているco, br, stは自分でも設定して使っている。

設定したエイリアスを一覧するには: ネットを調べるといくつか方法があるようだが、自分は以下のエイリアスで対応した。

[alias]
alias=!"git config --list | grep alias | sed -r 's/^alias\.//'"

git alias と打つことで以下みたく表示される。

$ git alias
st=status
co=checkout
br=branch

コミットを修正する

git rebase -i HEAD^^^^

HEAD^^^^ のところは HEAD~4 などと書くのかもしれないが、手癖でつい ^ を連打してしまう。

  • コミットを結合させたいときは squash
  • コミットメッセージだけ変更したいときには reword

ただしマージコミットは含めないようにする。 マージコミットがrebaseされるとよくわからないことになる。

参考:

リポジトリを元に戻す

困ったときに元に戻せる。 git reflog で戻りたい番号を調べて、 git reset --hard HEAD@{1} みたく指定する。

とはいえ、リポジトリのバックアップを取っておくのが一番安全。

参考:

ファイルの中身を検索する

gitでgrepできることを知らなかったが、gitでgrepできる。

git grep "検索したい文字列" コミット識別子 [検索対象ファイル]

コミット識別子にはブランチ名、コミットID、相対位置(HEAD^ など)が指定できる。

参考: 第12話 git grepと普通のgrepってどう違うの?【連載】マンガでわかるGit ~コマンド編~ - itstaffing エンジニアスタイル

ブランチとフォルダ名を指定してcloneする

git clone -b branch_name /path/to/repository.git hoge

hogeディレクトリにbranch_nameブランチがクローンされる。

diffの読み方

unified形式というものをやっと理解した。

参考: 続くといいな日記 – unified 形式パッチの文法について

diffをsortする(作成中)

under construction

logを充実させる(作成中)

under construction

参考文献

少し古いけどいまだにこの本を読んでいる。

もう少し詳しくなろうと思って上級編を買ったはいいが、積んでいる