ざるごのブログ

Gitで作業途中のcommitをリモートにpushしないといけないけどコミットログを綺麗に保ちたいときの対処法

投稿日時: 2023/03/08 17:11

最終更新日時: 2023/03/08 17:11

どうも,京大博士課程のざるご( @zalgo3 )です.

Gitのコミットログをきれいにするためには,作業のまとまりを意識してcommitをしていくことが重要です.

ところが,チーム開発だと,中途半端な状態のものを作業報告としていったんリモートにpushしないといけないことがあると思います.

そんなときに使えるtipsを個人的なメモがてらまとめておきます.

とりあえず作業用ブランチにpushしておく

ブランチを自由に切ってしまってもいい環境のときしか使えない技ですが,中途半端な状態のものをあげる専用のブランチを作っておくといいと思います.

たとえば,hogeブランチの修正をしている場合だと,hoge-WIPブランチなどを用意します.

そして,中途半端なコミットをするときは,コミットメッセージに[WIP]をつけるようにしておきます.

作業がまとまったら,cherry-pick -nでもとのブランチに作業内容を取り込む

git cherry-pickは,別ブランチの特定のコミットのみを取り込むコマンドですが,オプションに-nまたは--no-commitをつけると,コミットせずに作業内容のみを取り込んでくれます.

これを利用しましょう.

hoge-WIPブランチでgit logをしてコミットハッシュを確認してから,git switch hogehogeブランチに移り,

git cherry-pick -n [COMMIT HASH]..[COMIT HASH]

で作業を取り込みます.(前のコミットは取り込みたいコミットの一つ前を指定することに注意)

すると作業内容のみが取り込まれ,コミット前の状況なので,

git commit -m "piyo"

でコミットを行えばOKです.

もちろん,コミットメッセージごとそのままコミットを取り込みたい場合は,-nオプションを付けずにgit cherry-pickをすれば大丈夫です.