LoginSignup
0
0

More than 3 years have passed since last update.

【git】履歴をきれいにしたい

Last updated at Posted at 2020-05-10

git を使っていますが、グループで作業しているとき、履歴をきれいにしたいなーと思うことがあります。
そこで、頑張ってみます。ふー。

ローカルでcommit を一つにまとめる

とりあえず、自分は以下の作戦でできました。

  1. 開発開始のときのコミットに戻る
  2. 開発開始のコミットで新しいブランチを作り、チェックアウトする
  3. 開発で使用したブランチをmerge する
  4. リモートレポジトリにpush する or 開発で使用したブランチを削除する

実行例

最初にtopic branch dev0 で作業していました。

* 97bc41b (HEAD -> refs/heads/dev0) add3
* 0e4917a add1
* 802e1c2 initial

で、最初にチェックアウトして本命topic branch dev1 を作ります。

* 97bc41b (refs/heads/dev0) add3
* 0e4917a add1
* 802e1c2 (HEAD -> refs/heads/dev1) initial

ここでmerge --squash を実行します。

$ git merge --squash dev0
Updating 802e1c2..97bc41b
Fast-forward
Squash commit -- not updating HEAD
 test.txt | 3 +++
 1 file changed, 3 insertions(+)
$ git commit
[dev1 cc1152d] Squashed commit of the following:
 1 file changed, 3 insertions(+)
* cc1152d (HEAD -> refs/heads/dev1) Squashed commit of the following:
| * 97bc41b (refs/heads/dev0) add3
| * 0e4917a add1
|/
* 802e1c2 initial

この状態でpush すればdev0 はremote repository にはpush されません。
また、削除するには以下のコマンドでできます。

$ git branch -D dev0
Deleted branch dev0 (was 97bc41b).
* cc1152d (HEAD -> refs/heads/dev1) Squashed commit of the following:
* 802e1c2 initial

リモート・リポジトリにあった開発ブランチの削除はgithub ではUI操作でできました。

なんだかこれで本番も乗り切れそうです。ふー。

https://www.granfairs.com/blog/cto/git-merge-squash
を参考にさせていただきました。ありがとうございました。
(2020/05/10)

追記

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