Skip to content

常见场景

合并提交

提交一个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 addgit 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

这样后续继续在开发分支上开发时,就不会重复合并之前的内容。

喜欢这个项目?

如果这些内容对您有帮助,请考虑给项目一个⭐