gitでaddとcommitとpushを一気に行う方法
こんにちは!gitでコンフリクトすると社内で自慢する(?)Mizutani(@sirycity)です。「コンフリクトしちゃったwww」 とかチャットで送りたくならない?ならないか。
今日はgitのコマンド、addとcommitとpushを同時に一気に行う方法についてです。
※この方法は開発チームの方針によっては怒られます。注意。
結論
自分の使ってるシェル(bashとかzsh)の設定ファイル(.bashrcとか.zshrc)にこれを足すだけ。
alias xxxxx='git add -A && git commit --allow-empty-message -m "" && git push origin $(git branch | sed -n -e "s/^\* \(.*\)/\1/p")'
はじめに
gitにはadd、commit、pushっていうよく似たコマンドが3つあります。…似てるかな?まあ実際には全然違うんだけど、git覚えたての頃とかは誰しも迷いますよね。
- addはgitで扱うファイルを指定
- commitは作業内容をひとまとめにしてセーブ
- pushは一連の作業内容を共有
みたいな感じです。
ちゃんと使うのは難しいから…
addとcommitとpushはgitのコマンドの中でいったら簡単な方なんですが、それでも完璧に使おうとすると色々気を遣います。こなれてくるとコミットログ綺麗にしようとか考えちゃうんだよね。
でも初心者のうちからそんなこと考えるのは無理や。たいてい最初は全部addして全部コミットして適当にコメント書いて全部mainにプッシュ!!! だってそれで動くもんね。勿論ちゃんとした開発フローでそんなことしたらダメですが、別にそこまでちゃんとしなくて良い場面だってたくさんありますよね。例えば僕はgitでマックスバリュの買い物のメモとかしてたんですが(?)、そんなのにちゃんとしたルール作っても仕方ないですよね。別に自分が分かればいいし。
てなわけで、毎回addとかcommitとかcommitのコメントとかpushとかめんどいし一気にやっちゃいたい! って気持ち、結構あるんじゃないでしょうか。
aliasについて
gitのコマンドに限らず、ながーいコマンドとか複数のコマンドを省略できる機能があるんですね。aliasって名前なんですけど。…ここまで書いておいてなんですが、環境はmacを想定しています。まずは自分の使ってるシェルが何か調べましょう。これ↓
echo $0
たいていzshかbashじゃないかな?では次に設定ファイルまで行きましょう。わかりやすくFinder使うね。
cd && open .
これで開いた所に.bashrc
とか.zshrc
みたいなファイルはあるかな?ないなら自分で作ってもOK。ただ、もしもドットから始まるファイルが一つもないならFinderで非表示になってるだけかもしれないのでこれ↓を実行してみよう。
defaults write com.apple.finder AppleShowAllFiles true && killall Finder
見えたかな?ちなみに見えるようになったドットから始まるファイルをもう一度見えなくするにはこれ↓。
defaults write com.apple.finder AppleShowAllFiles false && killall Finder
ってなわけでrcのファイルができたらこれを追記。
alias xxxxx='git add -A && git commit --allow-empty-message -m "" && git push origin $(git branch | sed -n -e "s/^\* \(.*\)/\1/p")'
xxxxx
の部分はなんでもいいよ!これで準備完了。あとはgitでなんかやる時に従来はgit add
…とかやってた場所でxxxxx
って打つだけ。超簡単
aliasの詳細
aliasでやってることについてもうちょっと詳細を書くと…
git add -A
はとにかく全てのファイルをaddしろってコマンド。git commit --allow-empty-message -m ""
はコミットするけどコメントはなし!ってコマンド。git push origin $(git branch | sed -n -e "s/^\* \(.*\)/\1/p")
は現在のブランチと同じ名前のブランチでpushってコマンド。
さいごに
このコマンド、めっちゃ便利ではありますが取り扱い注意です。開発フローによっては以下のルールに抵触します。
- mainに直接push禁止
- コミットには必ずコメントを入れる
- コミットを作業内容ごとに適切に分類する
これらに気をつけてお使いください!以上。