※ Gitの知識はあることを前提としています。
※ 備忘録的に書いているので、詳しく内容や用語を説明していない部分があります。
今回試す事
- ローカル(Sourcetree)で過去の指定したコミットまでリセットする方法(git reset)
- ローカル(Sourcetree)でコミットをまとめる方法(git rebase -i)
ローカルで過去の指定したコミットまでリセットする方法(git reset)
どうなるのか
リセットされたコミットの履歴、「リセットした」という履歴も残らないので、
- コミット履歴がきれいになる。
(逆に言うと、後から見てもリセットの操作をしたことが分からない) - リセットによって消えたコミット履歴の内容は破棄されずに戻ってくる。(※リセット時のモードでHardを選択しなければ)
実践
今回は、「コミット①をなかったことにしたい」 という目標でやってみる。
- ここまでリセットしたい!というコミットを右クリックし、「現在のブランチをこのコミットまでリセット」を選択する。
- 使うモードを選択する。 (今回は、「Mixed」で行う)
- 完了
コミット履歴が消え、ファイルステータスで確認してみると、リセットしたコミット①の作業内容がワーキングツリーに戻っている(この戻る場所は、使うモードで変化してくる)。
ローカルでコミットをまとめる方法(git rebase -i)
どうなるのか
- 不必要に分けすぎたコミットをまとめることができる
実践
今回は、「コミット①,②,③をまとめる」 という目標でやってみる。
-
まとめたいコミットの内「一番先にコミットしたもの」(今回はコミット①)
まとめたいコミットの一個前のコミット( 今回は、Initial commit )を右クリックし、「○○の子とインタラクティブなリベースを行う」を選択する。
-
選択したコミット(Initial commit)以降のコミットが表示されるので、まとめたいコミットを選択し、「前のコミットとスカッシュ」を選択する。
コメント
今回はローカルでのコミット整理方法として紹介しています。
グループ開発で、リモートにcommitをpushしてしまった際には、他の開発者への影響もあるので「git reset」は推奨しないなど注意点があるので、気を付けてください。
※ご指摘やコメントありましたらよろしくお願いします!