24
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GitAdvent Calendar 2014

Day 11

Guard で Git コミットを自動で行う

Posted at

小ネタです。すいません。

自動コミットとそのきっかけ

ある日、突然「手動コミットが許されるのは小学生までだよねーキャハハ」というツイートが僕の TL に流れ込んできて、いろいろな方にお話を聞いたところ結構な人がコミットは自動化しているということだったので僕もやってみようと思いました。

当時のツイートはこんな感じ。

https://twitter.com/a_suenami/status/537513929849569280
https://twitter.com/a_suenami/status/537514152512589824

やってみた

Guard でやってみました。

# Gemfile
source "https://rubygems.org"
gem "guard-shell"
# Guardfile
guard :shell do
  watch /\A**\/*\z/ do |m|
    `git add #{m[0]} && git commit -m 'Automatically commit: #{m[0]}'`
  end
end

これだけです。

あとは Guard を起動します。

$ bundle exec guard

Guard を起動した状態で、例えば

$ echo 'Hello, world!' > hello.txt

とするとhello.txtが自動的にコミットされます。

$ git log --oneline -1
dc004a4 Automatically commit: hello.txt

あとは煮るなり焼くなり

Git はコミットさえしえておけば基本的にその履歴が消えることはほとんどありません。GC はされますがそれまでは基本的に各ブランチの HEAD から到達不可能になることがあるだけでコミット自体は残りますし、そのようなコミットも reflog からは参照できます。

共有リポジトリに push するコミットは意味的にまとまった単位になっているほうがよいですが、push する前の作業履歴として自動コミットはよいプラクティスなのではないでしょうか。あとは rebase して squash するなり、別ブランチを作って cherry-pick するなり、自由にいろいろすればよいのかと。

24
25
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?