3
2

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 1 year has passed since last update.

【GitHub】 簡単にcommit(コミット)の履歴を1つにまとめる方法

Last updated at Posted at 2022-08-02

背景

アプリ開発中に気づいたらコミットが10件あり履歴が多くてみにくことがあったので
簡単に履歴を一つにまとめる方法があるので紹介します。
今回使うものは、Squash(スカッシュ)です。

Squashとは

Squashは複数のコミット履歴を1つのコミット履歴でまとめる時使います。

使い方

それでは実際にやってみよう!

前提条件として、gitのエディタとしてvimを使用します。

もしvimを使っていないなら設定を変更する必要があります。

1. 履歴を探す

まず初めに、下記のコマンドを実行します。

$ git merge-base [pushしたいブランチ] HEAD 

//例えば,リモートのmainにpushしたければ下記のように書きます
$ git merge-base origin/main HEAD

実行すると下記のように英数字が表示されます。

$ git merge-base origin/main HEAD                    
73c9372c8801d9ba05b791d57e67f95de1aa06da //この英数字をコピー

73c9372c8801d9ba05b791d57e67f95de1aa06da をコピーしてください。
皆さんは、自分のところに出た英数字をコピーしてください。

2. 貼り付ける

git rebase -i の後にコピーした、英数字を貼り付けます。

$ git rebase -i 73c9372c8801d9ba05b791d57e67f95de1aa06da //貼り付ける

3. 履歴をまとめる

  • git rebase -i 73c9372c8801d9ba05b791d57e67f95de1aa06daを実行すると

  • 下記のような画面になりましたら、キーボードで英数字のaを押してください。

  • すると-INSERT-と下に出ます。
    -INSERT-と出れば書き換えが可能になります。

pick 950dd6f コミットのコメント1
pick 565fd5g コミットのコメント2
pick 5555j6f コミットのコメント3
pick 484b548 コミットのコメント4
pick gb665gb コミットのコメント5
pick bg4bg4b コミットのコメント6
pick 545454g コミットのコメント7
pick 454gbb5 コミットのコメント8

# Rebase 7911981..950dd6f onto 7911981 (1 command)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
//以下省略
-INSERT-
  • 下記のように一番上のpick以外のpicksに書き換えてください。
pick 950dd6f コミットのコメント1
s 565fd5g コミットのコメント2
s 5555j6f コミットのコメント3
s 484b548 コミットのコメント4
s gb665gb コミットのコメント5
s bg4bg4b コミットのコメント6
s 545454g コミットのコメント7
s 454gbb5 コミットのコメント8

# Rebase 7911981..950dd6f onto 7911981 (1 command)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
//以下省略
  • できましたら、保存をします。
    キーボードのescキーを押して、:wqを入力しEnterで実行します。

※印必ず、escキーを押してから:wqを入力してください。

  • もし、保存しないで抜けたい場合は:q!としてください。
:wq

その後はいつも通りpushします。

 ! [rejected]        feature/symptom_revision -> feature/symptom_revision (non-fast-forward)
error: failed to push some refs to 'github.com:jurabiinc/oarfish.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

push時に、上記のエラーが出るときは、強制pushしてください。

$ git push -f origin <ブランチ名>

これで終了です。
お疲れ様でした。

最後に

プルリク時、履歴はできるだけまとめるように心がけましょう!

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?