LoginSignup
2
0

More than 1 year has passed since last update.

【Git】ローカルでコミットを整理したい時(SourceTree)

Posted at

※ Gitの知識はあることを前提としています。
※ 備忘録的に書いているので、詳しく内容や用語を説明していない部分があります。

今回試す事

  • ローカル(Sourcetree)で過去の指定したコミットまでリセットする方法(git reset)
  • ローカル(Sourcetree)でコミットをまとめる方法(git rebase -i)

ローカルで過去の指定したコミットまでリセットする方法(git reset)

どうなるのか

リセットされたコミットの履歴、「リセットした」という履歴も残らないので、

  • コミット履歴がきれいになる。
    (逆に言うと、後から見てもリセットの操作をしたことが分からない)
  • リセットによって消えたコミット履歴の内容は破棄されずに戻ってくる。(※リセット時のモードでHardを選択しなければ)

実践

今回は、「コミット①をなかったことにしたい」 という目標でやってみる。

  1. ここまでリセットしたい!というコミットを右クリックし、「現在のブランチをこのコミットまでリセット」を選択する。
    image.png
  2. 使うモードを選択する。 (今回は、「Mixed」で行う)
    image.png
  3. 完了
    コミット履歴が消え、ファイルステータスで確認してみると、リセットしたコミット①の作業内容がワーキングツリーに戻っている(この戻る場所は、使うモードで変化してくる)。
    image.png
    image.png

ローカルでコミットをまとめる方法(git rebase -i)

どうなるのか

  • 不必要に分けすぎたコミットをまとめることができる

実践

今回は、「コミット①,②,③をまとめる」 という目標でやってみる。

  1. まとめたいコミットの内「一番先にコミットしたもの」(今回はコミット①) 
    まとめたいコミットの一個前のコミット( 今回は、Initial commit )を右クリックし、「○○の子とインタラクティブなリベースを行う」を選択する。
    git_practice.png

  2. 選択したコミット(Initial commit)以降のコミットが表示されるので、まとめたいコミットを選択し、「前のコミットとスカッシュ」を選択する。

    • 例:「コミット①と②をまとめたい時」
      コミット②を選択して、「前のコミットとスカッシュ」を選択する
    • (※Amend Commitのチェックではなく、Message部分などを押すと↓のように選択される)
      image.png
      git_practice2.png
      これで、コミット①と②がまとめられた。
      image.png
      ③と②も同様にまとめたら、「OK」を押す。(※「メッセージを編集」でコミットメッセージ編集可能)
      image.png
      git_practice3.png
  3. 完了 
    コミット①,②,③が1つのコミットとしてまとまり、整理された。
    image.png

コメント

今回はローカルでのコミット整理方法として紹介しています。
グループ開発で、リモートにcommitをpushしてしまった際には、他の開発者への影響もあるので「git reset」は推奨しないなど注意点があるので、気を付けてください。

※ご指摘やコメントありましたらよろしくお願いします!

2
0
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
2
0