本記事のモチベーション 約8年前、Gitを使い始めたときに以下の記事を公開したところ、想像以上の反応をいただきました。 当時はSubversionからGitに移行し、試行錯誤をしている中だったこともあり、多くの反応をいただけたことはモチベーションのひとつでした。 ただ、時が経ち、当然かもしれませんが現在は当時と違う書き方をしており、思想として変わっていない部分はあるものの、今でもときどきLikeをいただく中で、アップデートを全くしないのは誠実じゃないなと感じていました。 というわけで、現在のフォーマットも数年後には変わっている可能性が高いですが、その時々のスナップショットを公開することにも何らか意味があるかなと思い、「今の僕はこうコミットメッセージを書いているよ」というのをまとめました。 Gitを使う環境 開発フローやホスティングサービスごとのUIのdiffによって、最適なフォーマットは変
Gitのコミットログには、現在形で書く流派と過去形で書く流派がある。 どちらにすべきか決めかねていたが、Should I use past or present tense in git commit messages? - Stack Overflowを見て現在形、より正確には命令形を使うことに決めた。その理由は Gitの公式ガイドラインがそう言っているから である。 git.git - The core git plumbing は以下のように述べている。 Describe your changes in imperative mood, e.g. "make xyzzy do frotz" instead of "[This patch] makes xyzzy do frotz" or "[I] changed xyzzy to do frotz", as if you are g
この記事は Vim Advent Calendar 2021 の8日目に向けたものです。 TL;DR .gitmessage とちょっとした Vim script を用意して Vim 上での Conventional Commits をサポートするようにしたら捗った話 はじめに みなさん、良いコミットメッセージを書いているでしょうか? 私は全然です。。 わかりづらくないように気をつけつつも毎回「こんな感じで良いのかなぁ」と悩みながら書いていました。 そこで重い腰を上げて Conventional Commits を導入しようと思ったのですが、Conventional Commits をサポートするいい感じの Vim プラグインが見つからず、Commitizen を見てみるもセットアップが若干手間だったことと今の Git ワークフロー的に Not for me だったりしてピンとくるものがな
はじめに サーバーレス開発部@大阪の岩田です。 現在開発中のプロジェクトでソースコードの静的解析を強化すべくGitのpre-commit hookを便利・かつ簡単に管理する方法について調べていました。 色々調べたところ、Python製のpre-commitというツールが良さげだったので使い方を簡単にご紹介します。 pre-commitとは? Gitのpre-commitフックスクリプトを管理・メンテナンスするためのフレームワーク(位置付け的にツールの方がしっくり来るので、この記事ではツールと呼びます)です。 pre-commit自体はPython製ですが、Python以外の言語で書かれたプロジェクトに導入したり、Python以外の言語で書かれたhookスクリプトを管理することもできます。 公式サイトでは以下のように説明されています。 A framework for managing and
本記事ではGitHub APIを利用してコミットを作成する方法を紹介します。通常はGitクライアントでcommitとpushを行うことでコミットを作成しますが、GitHub APIだけでもコミットを作成できます。 まずはGitのデータ構造を把握しておく必要があります。下図のように、GitではRef、Commit、Tree、Blobという単位でコミットやファイルが管理されています。 https://git-scm.com/book/en/v2/Git-Internals-Git-Objects 新しいコミットを作成するには、木構造のLeafからRootに向かって、すなわちBlob→Tree→Commit→Refの順でオブジェクトを作成していきます。 具体的には、以下の順序で操作を行います。 Refを取得する。 Commitを取得する。 Blobを作成する。 Treeを作成する。 Commit
Emoji Prefixを導入して楽しくコミットメッセージを書こう🤘 🌟 Emoji Prefix とは❓ 文字通り、Prefixを絵文字にしましょってこと。😎 Gitでコミットメッセージを作成する際、先頭に絵文字をつけるだけです。 Prefixとは❓ Prefixと調べると接頭辞とでてきます。 接頭辞(せっとうじ)とは、接辞のうち、語基よりも前に付くもの。接頭語(せっとうご)とも言う。 wiki コミットメッセージ例文 commit_message_example ChangeLogを支える英語 チームで決まりを作ってプログラムの追加、変更、削除をわかりやすい形で決めを作ってまとめる事はどのプロジェクトでも見かけると思います。 その際、Prefixとして使われるのは「Add:」「Fix:」「Change:」「Update:」「Delete:」などだと思います。 Emoji Pref
Git における、git commit の取り消し方法や、やり直し操作に関する方法をまとめました。Git はどんなコミットでもすべてを記録していますので、一度間違えたとしても、いつでも昔の記録からもとに戻せ事が保証されています。 取り消しや、やり直し方法をマスターすれば、バージョン管理ツールとしてのメリットを最大限享受することができます。 git commit の取り消し方法、6選 コミットした直後に「あっ、この変更入れ忘れた!」「あっ、いらないファイルを混ぜてコミットしちゃった!」など、確認不足による間違いは、時間に追われるエンジニアに非常にしばしば発生します。そのような間違いコミットは、まだpushしていなければ、容易に取り消したり、その後コミットをやり直すことができます。 コミットの取り消しにまつわるケースを、下記の6種類に分けてご紹介します。 直前の git commit 実行を取
はじめに 最近 Vim 標準の補完機能について調べています。 以前は Vim の辞書ファイルからの補完について調べました。 Vim の辞書ファイルからのキーワード補完について調べてみた - Qiita 今回は、ユーザー定義関数による補完について使い方を調べてみました。 ユーザー定義補完とは Vim のマニュアル から引用します。 ユーザー定義補完は、オプション 'completefunc' で設定した関数(ユーザー定義関数 でもよい)によって補完する方法である。 自前で指定した関数を使って、補完候補を準備できるようです。 使い方 ユーザー定義の関数の指定方法は、Vim マニュアルの complete-functions という項目に書かれています。 Vim では挿入モードで CTRL-X CTRL-U でユーザー定義の補完を呼び出すことができます。 ユーザー定義の補完は変数 complet
CakePHPのCookbook翻訳で、gitの利用方法を以前書きました。 http://d.hatena.ne.jp/cakephper/20120709/1341808861 その時は、本家の最新の状態をrebaseで反映してから自分のリポジトリのブランチにpushするまでの流れを書きました。 その後は、githubのページから自分のブランチのページへ移動して、pullリクエストをcakephp/docsのmasterブランチに投げればマージされるのを待つのみになります。 今回、RESTの章を気が向いた時に少しずつ翻訳しながら進めていました。 https://github.com/cakephp/docs/pull/407 そうすると、毎回作業の終わりにコミットしたくなるのですが、途中経過のファイルをコミットするため、コミットメッセージとかどうしようかなと迷ってました。 いろいろと考え
はじめに git commit するまえに考えるべき10のこと | Act as Professionalを読んでいろいろと思うことがあったので書きました。 これはSCMBootCamp主催者としてとか、Mercurialユーザーを代表してとかではありません。 僕はこう思う。ということです。 読むの面倒な人は最下部のまとめだけ読めばok。 commit != push DVCSの利点はローカルコミットという概念を持ち込んだことです。これにより、高速な履歴追加、安全なマージを手に入れることができました。 件の記事を読んでいて気になったのは、commitという単語です。 特に、 1コミットに1つの対応 コメントアウトしたコードをコミットしない テストが正常に通過したものにしてください コミットメッセージの1行目は”短い説明” コミットメッセージのスタイル コミットメッセージのボディは有意義な内
Git を使用していると特定のコミットを指定したいことが多々あります。 例えば: コミットされる内容を確認したり(git diff)、コミットされた内容を確認したり(git show)、pull request された内容を確認したり(git log -p)、アレやコレを元に戻したり(git reset 等)コミットの順序を入れ替えたり(git rebase -i 等)1つのコミットを複数のコミットに分割したり(git rebase -i 等) 等々です。 この時、一番確実なのは git log でコミットのIDを調べて、そのIDで指定することです。 ただ、これは確実ではあるものの、40文字もの英数字の羅列をコピーするのは面倒です。 どうにかして簡単に指定できないものでしょうか。 現在のブランチの最新のコミットを指定する HEAD で指定できます。 これ単品だと面白くありませんが、他の記法
以前、読みやすいコミットにする方法としてコミットメッセージの書き方と小さくまとまったコミットの具体例を紹介しました。今回は、小さくまとまったコミットにするためのより一般的な方法の案を紹介します。案としているのは、広く使えそうな気がしますが、思いついたばかりでまだ実例がないためです。この方法が使えそうな気がしたらぜひ試してみてください。 どのくらいのコミットが読みやすい適切なサイズかというのはケースバイケースのことがほとんどです。以前紹介した具体例が使えることは日に何回かあるでしょうが、1日に二桁くらいはコミットするはず1なので、コミットの大半はケースバイケースで判断していることになります。では、ケースバイケースで判断しているときはどのように判断しているのでしょうか。感覚的にはケースバイケースで判断しているときも何かしら一般的な判断基準を使っていそうです。 そこで思いついた(気付いた)のが今
はじめに 「分かりやすいコードを書く」、「コードと一緒にテストも書く」等はソフトウェア開発において大切なことです。しかしそれと同じくらい大切なことして「分かりやすいコミットメッセージを書く」があります。これはあまり着目されていなく、見過ごされていることです。 今回は、コミットメッセージの分かりやすさの大切さ、そして、分かりやすくするための書き方を説明します。 コミットメッセージとその大切さ バージョン管理システムとコミット 現在、ほとんど全てのソフトウェア開発ではSubversionやGitなどのバージョン管理システムを使っています。バージョン管理システムを使うことによるメリットというのは、ソフトウェアの変更が記録されていくことにあります。 具体的なメリットは3つあります。 ソフトウェアの調査がしやすくなることです。現時点でのコードと、そして変更の履歴とを組み合わせることで、それらから非常
コミットメッセージの書き方ではコミットをわかりやすくするためには以下の2つの条件を満たす必要があると書きました。 コミットの内容が分かりやすく説明されていること コミットの内容が小さくまとまっていること このうち「コミットの内容が分かりやすく説明されていること」についてはすでに説明済みです。今回は「コミットの内容が小さくまとまっていること」について説明します。 めざすところ 単純にコミットの内容を小さくするだけではわかりやすくなりません。それでは、どのような基準で小さくすればよいのでしょうか。 よく言われることは1つのコミットには1つの小さな論理的にまとまった変更だけにする、というものです。たしかにこれは重要です。しかし、これだけを基準とすると、人によっては大きめなコミットになってしまいます。人それぞれで論理的なまとまりの大きさが異なるからです。 1つのコミットでどうすればよいかを考えるの
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く