8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

先輩に commit が多すぎると言われgit reset softを覚えた

Posted at

こんにちは。
最近、プログラミングを始めて、エンジニアを目指している人です。

今回はgit reset --softについてメモがてら書きます。

とりあえず、はやく git reset --softのやり方を。。。!!
という方用に、最初に私がやった方法を置いておきます

#やったこと
私がやったのは、 git reset --soft で、
10個くらいのコミットの内容を1つのコミットにまとめるというものです。
まずは

git log

を実行して、コミットログを表示します。
私の場合ここで、
コミットA
コミットB
コミットC
コミットD
コミットE
コミットF
コミットG
コミットH

みたいな感じのログが表示されました。
やりたいのは
コードはコミットHの内容のまま、
コミットログ的には、コミットAしかコミットしてないよ!という感じ
にしたかったので、

git reset --soft コミットAのコミットID

と実行し、何の問題もなく、1発でキレイなコミットを作ったような雰囲気になりましたとさ。
めでたしめでたし。

#詳細

ここからは、git reset --softにたどりつくまでと、
そもそもそれ何?ってところを書きます。

###たどり着くまで
タイトルにあるように、commitが多すぎて、
commitをキレイにしてほしいといわれました。

なんやそのコミットみたいなのが10個以上あって汚い上に、
大量のコミットの中身は、インデントの修正のみ...:baby:
それはあきれられても仕方ないですね。

ということでキレイにしましょう。

まずは git commit まとめる で検索!
検索結果...
git rebase -i これがまとめる方法らしい!

なるほどなるほど...これは前のコミットに次のコミットの内容を押し込む感じということかな...?
うーん...私のやりたいことは本当にこれなのか?

私がやりたいのは、

  • コミットA ←実装完了のコミット
  • コミットB ←インデント修正のコミット
  • コミットC ←インデント修正のコミット
  • コミットD ←インデント修正のコミット
  • コミットE ←インデント修正のコミット
  • コミットF ←インデント修正のコミット
  • コミットG ←インデント修正のコミット
  • コミットH ←インデント修正完了のコミット(最終コミット)

上記の中の、
コミットAに、最終コミットの情報を反映させてプルリクを出したいのだ。
しかも全部インデントの修正で同じところばかり触っているので、
BとかCとかをわざわざ反映させる必要なんてないのです。
どうすりゃいいんだい。(今みてみると本当にひどいコミットだ)

先輩に相談してみた

私「先生、私がやりたいことを実現するためにrebaseを行うのは正しいですか?」
先輩「えっ、リセットソフトでよくない?」
リセットソフト....?
なにそれ出てこなかったよ...(ここでググり力のなさが露呈した)
で、とりあえず調べてみた結果をまとめたところ

最終コミットの内容は保持した状態で、
コミットだけを削除できる

呪文らしい。
なんと!私がやりたいのはこれではないか!

ということで、最初に戻る

ちなみに、
気を付ける点として、

git reset --hard

という、コミットも変更内容も全部リセットする呪文もあるらしい。
これは、
いろいろいじってどこが原因がわからないけど詰まった!
とかで、前のコミットに戻りたい時に使うらしいです。
怖いので、私はまだ使ったことないですが、Tips程度に乗せておきます。

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?