In Git, is there a way to merge all changes from one branch into another, but squash to a single commit at the same time?
I often work on a new feature in a separate branch and will regularly commit/push – mainly for backup or to transfer what I’m working on to another machine. Mostly those commits say “Feature xxx WIP” or something redundant.
Once that work is finished and I want to merge WIP branch back into master, I’d like to discard all those intermediate commits, and just a have a single clean commit.
Is there an easy way to do this?
Alternatively, how about a command that squashes all commits on a branch since the point where it was branched?
9 s
Another option is git merge --squash <feature branch>
then finally do a git commit
.
From Git merge
--squash
--no-squash
Produce the working tree and index state as if a real merge
happened (except for the merge
information), but do not actually make
a commit or move theHEAD
, nor record
$GIT_DIR/MERGE_HEAD
to cause the next
git commit
command to create a merge
commit. This allows you to create a
single commit on top of the current
branch whose effect is the same as
merging another branch (or more in
case of an octopus).