TIM Labs

2015年5月アーカイブ

今回のあらすじ

SICP3.5 Streams を最初からバリバリ読んで、 Exercise 3.52 まで解くことにしましょう。

試行錯誤してる図

問題

git rebase は便利ですが、時々コンフリクトが起きて停止します:

$ git rebase master
Applying: Add GeneratedColumn
Applying: Add EnumerateGeneratedColumns
Applying: Use EnumerateGeneratedColumns to CreateQuery
Using index info to reconstruct a base tree...
M       AAA/BBB/Summary.cs
Falling back to patching base and 3-way merge...
Auto-merging AAA/BBB/Summary.cs
CONFLICT (content): Merge conflict in AAA/BBB/Summary.cs
Failed to merge in the changes.
Patch failed at 0037 Use EnumerateGeneratedColumns to CreateQuery
The copy of the patch that failed is found in:
   c:/Users/VimWizard/projects/SecretProject/.git/rebase-apply/patch

When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".

まず何が影響してるか、 git statusgit diff で確認しますよね。 あれこれ端末内で情報を表示して状況を確認した結果、コンフリクトの解決に取り掛かる訳ですが、 解決するには元々 何のコミットをapplyしようとしてコンフリクトしたのか という情報も重要です。 この情報自体は上記の git rebase からのメッセージに含まれています。 が、しかし、

  • git statusgit diff を何回も実行しているので git rebase のメッセージは流れています。 あのメッセージがどこにあったのかスクロールして探すのは面倒です。
  • 仮に端末内の出力を検索したとしても、 git rebase はコンフリクトしたコミットのコミットメッセージは表示してくれているものの、 コミットIDは表示してくれないので、結局問題のコミットにおける変更点だけを見るには不向きです。

どうにかして一発でapplyし損ねたコミットを表示できないものでしょうか。

このアーカイブについて

このページには、2015年5月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2015年4月です。

次のアーカイブは2015年6月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。