複数コミットを一つにまとめるGitコマンド操作


[ad#co-1]

新卒入社してもうじき2年が経ちますが、git操作って意外と苦手な人が多なと思うのが所感です。
やらかしたー!って時のコマンドより、こうしたほうがもっと効率良く開発を進めれるといった視点からのgitコマンドを紹介していきます。

他のGitコマンド操作の記事はコチラから。

僕はSourceTreeなどのアプリは使わないので、SourceTree派の方には向きません。
ターミナルでgit操作する方向けの記事です。

一時的な複数コミットを一つにまとめたい時に使うGitコマンド

こういったcommitコメントを見たこと又は書いたことがないでしょうか?

「とりあえずコミットしておく」

他のブランチに切り替えてレビューをしたり、作業中に緊急リリースのテスト確認をlocalでする場合などはとりあえずコミットしたくなりますよね。
しかし、それを放置してプルリクなんて投げ用ものなら確実に殺されます。笑

特にレビュー者はどういった方法でソースコードレビューするかわかりません。
GitHubやBitBucketでレビューする人。
SourceTreeでレビューする人。
IntelliJなどのIDEでレビューする人。
けっこう様々ですよね。

1コミットずつ見る人、変更ファイル全体を見る人。
僕が思う一番コミットは機能単位ごとに1コミットです。
そうすればどのようなレビュー者に対しても適用できるからです。

ではどのようにコミットを分けるのか。
まずは前回のコミットを戻さないといけません。
そこでresetします。

[ad#co-2]

commit履歴を確認してcommitハッシュ値を取得する

git log –oneline

e.g.
d455b34 とりあえずコミット
c1f6e59 YUME-3 facebook4jの導入
…(省略)

もどしたい状態のcommitまで戻す。

git reset –mixed (commitハッシュ値)

e.g.
git reset –mixed c1f6e59

正常に戻っているかを確認

git log –oneline

e.g.
c1f6e59 YUME-3 facebook4jの導入
…(省略)

以上で、前の状態まで戻せます。
この状態から追加でコードを書き、その後はpushですね。

stagingにあげる

git add .

すべての変更がstagingにあがっているかを確認

git status

commitする

git commit -am “新しくhogehogeっていう機能を追加した”

強制push!!

git push -f

これで一つのコミットにまとめることができます。
そうすればレビュー者の方も助かりますよね。
効率のいい開発のためにも覚えておいてはいかがでしょうか?


Tags: