git-squash - Git squash - 最後のXコミットをGitでまとめる

Git rebase squash fixup / git / rebase / squash

Gitを使って、直近のX回のコミットを1つのコミットにまとめるには?

dvvrt



Answer #1

1)コミットショートハッシュの識別

# git log --pretty=oneline --abbrev-commit
abcd1234 Update to Fix for issue B
cdababcd Fix issue B
deab3412 Fix issue A
....

2)最後の2つのコミットを潰す(マージする)場合

# git rebase -i deab3412
....
pick cdababcd Fix issue B
pick abcd1234 Update to Fix for issue B
....
....
pick cdababcd Fix issue B
squash abcd1234 Update to Fix for issue B
....

7)これで正常に潰れました。ログを確認することで確認できます。

# git log --pretty=oneline --abbrev-commit
1122abcd Fix issue B
deab3412 Fix issue A
....
# git push origin +master

手順2

git add <files>
git commit --fixup=OLDCOMMIT
git rebase --interactive --autosquash OLDCOMMIT^

手順3

    # git log --pretty=oneline --abbrev-commit
    cdababcd Fix issue B
    deab3412 Fix issue A
    ....
    # git add <files> # New changes
    # git commit --amend
    # git log --pretty=oneline --abbrev-commit
    1d4ab2e1 Fix issue B
    deab3412 Fix issue A
    ....