git 操作
大约 3 分钟
git 操作
常用命令
清理本地远程仓储
刷新本地仓库与远程仓库的保持这些改动的同步
git remote prune origin
在你经常使用的命令当中有一个 git branch –a 用来查看所有的分支,包括本地和远程的。但是时间长了你会发现有些分支在远程其实早就被删除了,但是在你本地依然可以看见这些被删除的分支。
你可以通过命令,git remote show origin
来查看有关于 origin 的一些信息,包括分支是否 tracking。
Git 提交规范参考
feat
增加新的业务功能fix
修复业务问题/BUGperf
优化性能style
更改代码风格, 不影响运行结果refactor
重构代码revert
撤销更改test
测试相关, 不涉及业务代码的更改docs
文档和注释相关chore
更新依赖/修改脚手架配置等琐事workflow
工作流改进ci
持续集成相关types
类型定义文件更改wip
开发中
命令 | 图标 | 说明 |
---|---|---|
:bug: | 🐛 | 修复 bug |
:sparkles: | ✨ | 新功能 |
:zap: | ⚡ | 优化性能改善 |
:pencil: | 📝 | 写文档 |
:art: | 🎨 | 结构改进/格式化代码 |
:fire: | 🔥 | 删除代码或者文档 |
:arrow_up: | ⬆️ | 升级依赖 |
:twisted_rightwards_arrows: | 🔀 | 合并分支 |
:truck: | 🚚 | 文件移动或者重命名 |
:card_file_box: | 🗃️ | 执行数据库相关改动 |
Git 中合并代码的常用命令主要有以下几种:
1. git merge
(普通合并)
将指定分支的代码合并到当前分支。
git checkout main # 切换到目标分支(如 main)
git merge feature-branch # 将 feature-branch 合并到 main
- 适用场景:需要保留完整提交历史,适合公共分支(如
main
、develop
)。 - 合并方式:
- Fast-forward(快进合并):如果目标分支没有新提交,Git 会直接移动指针。
- Recursive(递归合并):如果目标分支有更新,Git 会生成一个新的合并提交。
2. git rebase
(变基合并)
将当前分支的提交“重新应用”到目标分支上,使提交历史更线性。
git checkout feature-branch # 切换到要变基的分支
git rebase main # 将 feature-branch 的提交变基到 main
- 适用场景:个人分支整理提交历史,避免过多的合并提交。
- 注意:不要对公共分支(如
main
)使用rebase
,否则会破坏他人代码历史。
3. git cherry-pick
(选择性合并)
选择某个(或某些)提交应用到当前分支。
git checkout main # 切换到目标分支
git cherry-pick abc123 # 将提交 abc123 应用到 main
- 适用场景:只需要合并某个特定提交,而不是整个分支。
4. git pull
(拉取并合并远程代码)
相当于 git fetch
+ git merge
(默认行为)。
git pull origin main # 拉取远程 main 分支并合并到本地
- 如果想用
rebase
方式拉取代码,可以:git pull --rebase origin main
5. git merge --squash
(压缩合并)
将多个提交压缩成一个,再合并到目标分支。
git checkout main
git merge --squash feature-branch
git commit -m "合并 feature-branch 的所有改动"
- 适用场景:分支提交太多,希望合并后保持干净的历史。
6. 解决合并冲突
如果合并时发生冲突,需要手动解决:
- 打开冲突文件,修改冲突部分(
<<<<<<<
、=======
、>>>>>>>
)。 - 标记冲突已解决:
git add <冲突文件> git commit # 完成合并提交
- 如果放弃合并:
git merge --abort # 终止合并,回到合并前状态
总结对比
命令 | 用途 | 适用场景 |
---|---|---|
git merge | 普通合并 | 公共分支合并,保留完整历史 |
git rebase | 变基合并 | 个人分支整理提交历史 |
git cherry-pick | 选择性合并 | 只合并某个提交 |
git pull | 拉取并合并远程代码 | 更新本地代码 |
git merge --squash | 压缩合并 | 合并多个提交为一个 |
根据团队协作规范选择合适的合并方式! 🚀