長期インターンが開始から2ヶ月経とうとしており、無事チュートリアルも終了した段階です。
本業務で自社プロダクトのissueを進めていると、**「このソースコード何してるんだろう...? 誰が編集したんだろう...?」**みたいなことがよくあります。
そんな時に**git blame
で、ソースコードのコミット履歴からいつ誰がどのコミットで作成・編集したのか**を追うことが出来ます。
Git blameコマンド
ターミナルで$ git blame ファイル名
を実行します。
$ git blame app/models/post.rb
435ed96f (TsuboyaTaiki 2020-05-08 17:41:29 +0900 1) # frozen_string_literal: true
435ed96f (TsuboyaTaiki 2020-05-08 17:41:29 +0900 2)
679dd29e (TsuboyaTaiki 2020-04-30 10:59:39 +0900 3) class Post < ApplicationRecord
d97256ae (TsuboyaTaiki 2020-05-04 18:34:45 +0900 4) validates :account_id, length: { maximum: 255 }, presence: true
d97256ae (TsuboyaTaiki 2020-05-04 18:34:45 +0900 5) validates :post_sentence, length: { maximum: 255 }, presence: true
d97256ae (TsuboyaTaiki 2020-05-04 18:34:45 +0900 6) validates :target_post_id, length: { maximum: 255 }
b8179705 (TsuboyaTaiki 2020-04-30 16:32:40 +0900 7)
8eccd041 (TsuboyaTaiki 2020-05-04 19:00:07 +0900 8) belongs_to :account
435ed96f (TsuboyaTaiki 2020-05-08 17:41:29 +0900 9) has_many :goods, dependent: :destroy
a745018e (TsuboyaTaiki 2020-05-07 10:45:35 +0900 10)
435ed96f (TsuboyaTaiki 2020-05-08 17:41:29 +0900 11) has_many :reply_posts, class_name: 'Post', foreign_key: 'target_post_id', dependent: :destroy
a9768c5c (TsuboyaTaiki 2020-05-15 17:12:14 +0900 12) belongs_to :new_post, class_name: 'Post', foreign_key: 'target_post_id', optional: true
679dd29e (TsuboyaTaiki 2020-04-30 10:59:39 +0900 13) end
ソースコードの各行に対して、
- コミットのハッシュ値
- 変更者名
- コミット日時
などの情報を得られます!変更者名がわかれば直接質問しに行くこともできます!
コミットの変更内容を詳しく見たい場合はgit show
にかけます($ git show コミットのハッシュ値
)。
$ git show 435ed96f
commit 435ed96f2b73e4ecc4bc79a676037bc075a626df
Author: TsuboyaTaiki <tsuboyataiki@taiki-mac.local>
Date: Fri May 8 17:41:29 2020 +0900
20200508_2
diff --git a/Gemfile b/Gemfile
index ba11cb2..28a4a0c 100644
--- a/Gemfile
+++ b/Gemfile
・
・
・
行間指定
ソースコードが長い時は、-L
オプションで行間指定します!
$ git blame -L 4,6 app/models/post.rb # 4行目から6行目
d97256ae (TsuboyaTaiki 2020-05-04 18:34:45 +0900 4) validates :account_id, length: { maximum: 255 }, presence: true
d97256ae (TsuboyaTaiki 2020-05-04 18:34:45 +0900 5) validates :post_sentence, length: { maximum: 255 }, presence: true
d97256ae (TsuboyaTaiki 2020-05-04 18:34:45 +0900 6) validates :target_post_id, length: { maximum: 255 }
GitHubから
GitHubのCodeタブにも、Blameという項目があります。
Blameに飛ぶと、
こんな感じ!
GitHubからだと、GUIで操作できます。
あと、コミット時のコメントが簡単に見れるのも利点です!
終わり
git blame
は、バグの混入などがあった時などに使われることが多いようです。
でも今回のようなユースケースもあるので有効活用していきたいです...