SourceTreeでインタラクティブなリベースができないときに疑ってみるといいこと

今回は私がSourceTreeでインタラクティブなリベースを行うときにハマり、その時の原因と対策について書きたいと思います。



SourceTreeでインタラクティブなリベースができないときに疑ってみるといいこと

次のようなGitの履歴を持つレポジトリをSourceTreeでリベースを行おうとした時です。

SourceTree上でインタラクティブなリベース(対話形式でリベース)して上記4つのコミットを1つのコミットにしようとしていました。

しかし、4つのコミットをSquashして1つのコミットにし、ローカルではうまくいくのですがプッシュしようとすると、次のエラーが発生してプッシュできませんでした。

実務でエラーが起き、その時はWindowsを使っていました。
今再現しているのはMacです。

上記のMacで起きるエラーではよく分かりませんが、WindowsでSourceTreeを使った時は「Comment Error」みたいなエラーが出てきてpushができませんでした。

原因と対策

上記エラーの原因としては、Squashして一つのコミットにまとめようとした時、コメントの最初に”#”がついていることです。

これがなぜ悪いのかというと、SourceTree上ではなくGit bash上でリベースを行おうとしたときに分かります。

Git bash上で同じ操作を行おうとすると、次のようなrebaseファイルを編集することになりますね。

そして次のようなコメントの編集画面になると思います。

ここで気づくことがあると思います。
それは、コメントとして”#”が使われていることです。

つまり、rebaseしたときコメントの先頭に”#”がついてしまうとそれがコメントとして認識されてしまい、コメットメッセージがnullとして送信されてしまうためpush時にエラーが起きてしまうのです。

よって回避策としては、コメントの先頭の”#”をとってあげればいいことになります。

redmine上のチケットと結びつける時はコメントの先頭に”#”をつけてコミットメッセージをつけることが風習だったり習慣になっているかもしれませんが、rebaseを行うときなど特別な操作を行うときには注意が必要です。

SouceTree上ではできないままですが、”#”に注意してターミナルを起動してコマンドでrebaseを行ってやるとうまくいきます。

終わりに

今回はSourceTreeでインタアクティブなリベースができないときに疑ってみるといいことについてご紹介いたしました。

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いいたします。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。






SourceTree

Posted by ちこ