常见场景
合并提交
提交一个PR以后,如果发现这个PR里面有很多小的提交,就可以合并提交。
1、先在本地分支上查看日志
shell
git log
2、把顶部的n个提交记录聚合到一起
shell
git rebase -i HEAD~n
修改pick为s,s是squash的缩写,然后输入:wq
保存,会进入编辑模式,修改提交信息,然后输入:wq
保存,就会把顶部的n个提交记录聚合到一起。
4、完成提交
shell
git push -f origin <branch-name>
拉取最新分支代码
当你在自己的开发分支(如dev-test)上已经编写了很多代码,但需要同步主分支(如dev)的最新更新时,可以通过以下方式操作。
1、确保当前在开发分支上
shell
git checkout dev-test
2、拉取远程主分支的最新代码
shell
git fetch origin
3、将主分支的最新代码合并到当前分支
shell
git merge origin/dev
注意事项:
使用
merge
会保留当前分支的历史,合并时可能产生一次合并提交如果希望保持更干净的提交历史,可以使用
git rebase origin/dev
,但要注意处理可能的冲突如果出现冲突,需要手动解决冲突文件,然后使用
git add
和git commit
完成合并
4、如果有冲突需要解决
shell
# 解决冲突后标记文件
git add <冲突文件名>
# 完成合并
git commit
Squash合并保持干净提交历史
当你在开发分支上有很多临时提交,但想要合并到主分支时只保留一条干净的提交记录。
使用场景
在开发分支(如dev-test)上有多个临时commit
希望合并到主分支(如dev)时只产生一条提交记录
保持主分支的提交历史简洁明了
操作步骤
1、切换到主分支并更新
shell
git checkout dev
git pull origin dev
2、使用squash合并开发分支
shell
git merge --squash dev-test
3、创建一个干净的提交
shell
git commit -m "feat: 添加 xxx 功能,整合 dev-test 分支内容"
4、推送到远程
shell
git push origin dev
重要注意事项
❌ 问题: git merge --squash
不会记住上次合并到哪里,每次都会合并分支相对于主分支的所有改动。
✅ 解决方案(选择其一):
方案一:合并后重置开发分支
shell
# 合并完成后
git checkout dev-test
git reset --hard dev
方案二:删除旧分支,新建干净分支
shell
# 合并完成后
git branch -d dev-test
git checkout -b dev-test dev
这样后续继续在开发分支上开发时,就不会重复合并之前的内容。