在 Git 中,有没有办法将所有更改从一个分支合并到另一个分支,但同时压缩到单个提交?
我经常在一个单独的分支中开发一个新功能,并且会定期提交/推送——主要用于备份或将我正在处理的内容转移到另一台机器上。大多数提交都说“Feature xxx WIP”或多余的东西。
一旦该工作完成并且我想将 WIP 分支合并回 master,我想丢弃所有这些中间提交,并且只有一个干净的提交。
是否有捷径可寻?
或者,从分支点开始压缩分支上所有提交的命令怎么样?
另一种选择是git merge --squash <feature branch>最后做一个git commit.
git merge --squash <feature branch>
git commit
从Git 合并
--squash --no-squash 生成工作树和索引状态,就好像发生了真正的合并(合并信息除外),但实际上不进行提交或移动HEAD, 也不记录 $GIT_DIR/MERGE_HEAD以导致下一个 git commit命令创建合并提交。这允许您在当前分支之上创建一个提交,其效果与合并另一个分支相同(或者在章鱼的情况下更多)。
--squash
--no-squash
生成工作树和索引状态,就好像发生了真正的合并(合并信息除外),但实际上不进行提交或移动HEAD, 也不记录 $GIT_DIR/MERGE_HEAD以导致下一个 git commit命令创建合并提交。这允许您在当前分支之上创建一个提交,其效果与合并另一个分支相同(或者在章鱼的情况下更多)。
HEAD
$GIT_DIR/MERGE_HEAD