git-nowにてカレントブランチのnowコミットだけfixupするようにした

 

問題

git-now --fixup

は内部で最初のgit-nowで作成したコミットを探す際、簡単にいえばログから最初のnowコミット(メッセージに”from now”が含まれるコミット)を抽出しています。しかし、これだとうっかりpushしてしまったコミットも含んで探してしまい、fixupしたくないところまでfixupしてしまいます。

 

対応

そこで、この問題の軽減として、フィーチャーブランチ上で作業しているときは、フィーチャーブランチに含まれるnowコミットだけをfixupしようと考えたわけです。

で、どうするか?

答えは「masterから分岐したコミットだけを対象としたログから最初のnowコミットを探す」です。そのために、git logを実行する際に

git log master..

のように「ログ取得対象のコミットを明示的に指定」してやります。上記の指定は、「masterからHEADまで」のログのうち、master部分のログを取り除いたものを取得できます。(参考:transitive.info – git log 使い方

 

こんなコミットグラフだっとします。

 

a-b <master>
   \
     c-d <*temp>

※<branchname>:ブランチ名(*はカレントブランチ)

コミットログを見るとこんな感じです。

$ git log --pretty=format:"%h %Cgreen%d%Creset %s"
cfeb93c (HEAD, temp) [from now] 2014/10/23 13:02:36
1f48b0d [from now] 2014/10/23 13:00:20
0a64b5f (master) [from now] 2014/10/23 12:46:36
b9656d0 [from now] 2014/10/23 12:46:25

ここで、master..を指定するとどうなるか?

$ git log --pretty=format:"%h %Cgreen%d%Creset %s" master..
cfeb93c (HEAD, temp) [from now] 2014/10/23 13:02:36
1f48b0d [from now] 2014/10/23 13:00:20

ご覧のようにmasterから分岐後の2つのコミットだけが取得できます。

この動作を利用したのが、今回の修正です。

 

なお

今回の記事を作成するにあたりこんな変更も加えました。

広告

git-nowにてカレントブランチのnowコミットだけfixupするようにした」への1件のフィードバック

  1. ピンバック: 2014年ふりかえり by @masaru_b_cl | be free

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中