1 场景
我们经常会面临着将某个分支或者很多其他的分支merge到一个公共release-{branchName}分支里。
此时merge后,当前分支就会有很多commit记录。如果这些commit我们并不需要,那么我们可以采用 git merge --squash 语法 进行commit 合并。
语法
git merge --squash {import_branch_name}
2 以下我们做个测试
新建git仓库,创建readme.md文件。新建dev分支,并进行3次提交。
git init
echo "hello" > readme.md && git add ./*
git commit -m "create readme.md"
git checkout -b dev
echo "第1次修改" >> readme.md && git add ./*
git commit -m "第1次修改"
echo "第2次修改" >> readme.md && git add ./*
git commit -m "第2次修改"
echo "第3次修改" >> readme.md && git add ./*
git commit -m "第3次修改"
此时通过 git log 查看提交记录
下来我们将dev合并到master分支。
2.1 方法一
merge 不带参数
git checkout master
git merge dev
git status
查看提交记录。
2.2 方法一
git merge --squash 带参数
git reset --hard 3609c2570c7fcad52270357fc124e67baa95d5f0
git merge --squash dev
git status // 此时可以发现有文件变动,但并未提交
git commit -m "merge dev" // 需要手动提交
再次查看提交记录。
你会发现会有一次commit记录。