今年は前年比でGitをよく使った一年であった。 いろんな使い方をするうちに困ったときのベストプラクティスが手元にまとまったので、ゆくゆくはこの記事を更新するつもりではあるものの、まずはその草稿として。
- エイリアスをつける
- コミットを修正する
- リポジトリを元に戻す
- ファイルの中身を検索する
- ブランチとフォルダ名を指定してcloneする
- diffの読み方
- diffをsortする(作成中)
- logを充実させる(作成中)
- 参考文献
エイリアスをつける
公式的な解説いわく「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
参考文献
少し古いけどいまだにこの本を読んでいる。
もう少し詳しくなろうと思って上級編を買ったはいいが、積んでいる