git命令使用
添加:
移除锁定:rm -f .git/index.lock
添加本地的所有变更:git add.
提交:git commit -m "提交信息":
发布:git push
强制拉取并覆盖本地:git fetch origin && git reset –hard origin/main
移除python缓存的追踪:git rm –cached -r pycache
完整开发流程
初始化:git init
1. 将所有项目文件添加到暂存区
git add .
2. 完成首次提交,备注信息自定义(建议清晰描述)
git commit -m “feat: 初始化项目,提交基础代码”
查看当前分支:git branch
创建新的分支:
示例1:创建开发分支dev git branch dev
示例2:创建功能分支feature/user-login(用于开发用户登录功能)
示例3:创建bug修复分支bug/fix-xxx(用于修复线上bug)
切换分支:
方式1:checkout 切换到dev分支 git checkout dev
方式2:switch 切换到feature/user-login分支(更直观) git switch feature/user-login
创建并切换分支:
示例:创建并切换到feature/pay功能分支
git checkout -b feature/pay
等价于(Git 2.23+) git switch -c feature/pay
5. 分支合并(将子分支代码合并到主分支 / 目标分支)
比如:功能分支feature/user-login开发完成后,合并到dev开发分支
1. 先切换到目标分支(要合并到哪个分支,就先切到哪个分支) git switch dev
2. 执行合并命令,语法:git merge <待合并的分支名> git merge feature/user-login
删除无用的分支
– 删除本地分支(确保已合并,避免代码丢失) git branch -d feature/user-login
– 强制删除未合并的分支(谨慎使用,会丢失未合并代码) git branch -D feature/user-login
三、多标签(tag)管理:创建、查看、删除
标签用于标记重要的版本节点(比如v1.0.0、v1.1.0),通常对应发布版本,分为轻量标签和附注标签。
1. 查看已有标签
bash
运行
git tag
- 无标签时,终端无输出;有标签时,按创建顺序列出所有标签名
2. 创建标签
Git 支持两种标签类型,按需选择:
(1)轻量标签(简单标记,仅存版本名,无额外信息)
语法:git tag <标签名>(默认标记当前提交记录)
bash
运行
# 示例:创建轻量标签v1.0.0
git tag v1.0.0
# 给指定提交记录创建轻量标签(需提供提交哈希值,前6位即可)
git tag v0.9.0 a1b2c3
(2)附注标签(带详细信息,推荐用于正式版本发布)
语法:git tag -a <标签名> -m <标签备注信息>(-a表示附注标签,-m指定备注)
bash
运行
# 示例:创建附注标签v1.1.0,备注为“发布v1.1.0版本,新增支付功能”
git tag -a v1.1.0 -m "release: v1.1.0 新增支付功能"
# 给指定提交记录创建附注标签
git tag -a v0.9.1 -m "beta: v0.9.1 测试版本" d4e5f6
3. 查看标签详情
仅对附注标签有效(轻量标签无详情),语法:git show <标签名>
bash
运行
# 查看v1.1.0标签的详细信息(包含提交记录、备注、作者等)
git show v1.1.0
4. 删除本地标签
语法:git tag -d <标签名>
bash
运行
# 示例:删除标签v0.9.0
git tag -d v0.9.0
# 批量删除可结合管道命令(示例:删除所有以v0.9开头的标签)
git tag | grep "v0.9" | xargs git tag -d
四、补充说明(本地操作延伸)
- 若后续需要将本地分支 / 标签推送到远程仓库(比如 GitHub/GitLab),可执行:bash运行
# 推送单个分支到远程 git push origin <分支名> # 推送所有本地分支到远程 git push origin --all # 推送单个标签到远程 git push origin <标签名> # 推送所有本地标签到远程 git push origin --tags - 分支命名规范(建议遵循,提高可读性):
- 主分支:
master/main(生产环境分支,禁止直接开发) - 开发分支:
dev/develop(日常开发合并分支) - 功能分支:
feature/xxx(比如feature/user-center) - bug 修复分支:
bug/xxx/hotfix/xxx(比如hotfix/login-error)
- 主分支:
- 标签命名规范(建议遵循语义化版本):
v<主版本>.<次版本>.<修订版本>(比如v1.0.0、v1.2.3)
总结
- 核心流程:
git init(初始化仓库)→ 分支操作(创建 / 切换 / 合并)→ 标签操作(标记版本) - 分支核心命令:
git branch(查看 / 创建)、git checkout/git switch(切换)、git merge(合并)、git branch -d(删除) - 标签核心命令:
git tag(查看 / 创建轻量标签)、git tag -a -m(创建附注标签)、git show(查看详情)、git tag -d(删除) - 分支用于并行开发,标签用于标记正式版本,两者配合使用可高效管理本地代码版本
如何合并分支?
你想详细了解 Git 的分支合并操作,我会从核心流程、具体步骤、冲突解决等方面全面讲解,确保你能顺利完成分支合并。
一、分支合并核心前提
合并前必须满足一个关键条件:先切换到「目标分支」(即你要把代码合并到哪个分支上,比如要把功能分支合并到开发分支,先切换到开发分支),不能在待合并的分支上直接执行合并命令。
二、分支合并核心步骤(以「功能分支合并到开发分支」为例)
假设我们有 dev(开发分支,目标分支)和 feature/user-login(用户登录功能分支,待合并分支),完整步骤如下:
1. 切换到目标分支
使用 git checkout(传统方式)或 git switch(Git 2.23+ 推荐,更直观)切换到目标分支:
bash
运行
# 方式1:git checkout 切换(兼容所有Git版本)
git checkout dev
# 方式2:git switch 切换(Git 2.23+ 优先使用,语义更清晰)
git switch dev
2. (可选)确保目标分支是最新状态
如果是多人协作场景,先拉取远程目标分支的最新代码(避免合并本地过时分支),本地单人开发可跳过此步骤:
bash
运行
git pull origin dev
3. 执行合并命令
核心合并命令:git merge <待合并的分支名>,将指定分支的代码合并到当前所在的目标分支:
bash
运行
# 合并 feature/user-login 分支到当前的 dev 分支
git merge feature/user-login
4. 合并成功后的操作
- 合并成功后,终端会提示类似
Merge made by the 'recursive' strategy.的信息 - 此时目标分支(
dev)已包含待合并分支(feature/user-login)的所有代码 - 若该功能分支后续不再使用,可删除该分支(参考下方可选步骤)
5. (可选)删除已合并的无用分支
功能分支合并完成后,通常无需保留,可删除本地分支释放资源:
bash
运行
# 安全删除(仅当分支已合并时才会删除,避免代码丢失,推荐使用)
git branch -d feature/user-login
# 强制删除(无论是否合并都删除,谨慎使用,会丢失未合并代码)
git branch -D feature/user-login
三、常见场景:快速合并(Fast-forward)
当待合并分支是从目标分支直接分叉出来,且目标分支在分叉后没有任何新的提交时,Git 会执行「快速合并」(Fast-forward)。
特点:
- 不会创建新的合并提交记录,只是简单地将目标分支的指针指向待合并分支的最新提交
- 终端会提示
Already up to date.(若目标分支已包含待合并分支代码)或Fast-forward(快速合并成功) - 示例效果:
dev分支指针直接移动到feature/user-login的最新提交,无额外合并记录
四、关键场景:合并冲突的解决
当两个分支修改了同一文件的同一部分内容,Git 无法自动合并,会触发「合并冲突」,这是分支合并中最常见的问题,需要手动解决。
1. 冲突触发的提示
终端会提示类似信息:
bash
运行
Auto-merging src/user/login.js
CONFLICT (content): Merge conflict in src/user/login.js
Automatic merge failed; fix conflicts and then commit the result.
此时 Git 会暂停合并流程,等待用户手动解决冲突。
2. 手动解决冲突的步骤
- 找到冲突文件:终端会列出冲突文件路径(如上的
src/user/login.js),打开该文件 - 识别冲突标记:文件中会出现 Git 自动添加的冲突标记,格式如下:javascript运行
<<<<<<< HEAD // 表示当前目标分支(dev)的代码 const loginBtnText = "登录"; // 目标分支的内容 ======= // 分隔线,上下分别是两个分支的冲突代码 const loginBtnText = "用户登录"; // 待合并分支(feature/user-login)的内容 >>>>>>> feature/user-login // 表示待合并分支的名称 - 编辑冲突内容:删除冲突标记(
<<<<<<< HEAD、=======、>>>>>>> feature/user-login),并根据业务需求保留正确的代码(可保留其中一个,或整合两者),例如最终修改为:javascript运行// 整合后的正确代码(按需调整) const loginBtnText = "用户登录"; - 标记冲突已解决:将解决后的文件添加到暂存区,告诉 Git 该冲突已处理:bash运行
# 添加单个冲突文件 git add src/user/login.js # 若多个冲突文件,可批量添加 git add . - 完成合并提交:冲突解决后,执行
commit命令完成最终的合并(此时无需填写备注,Git 会自动生成合并备注,也可自定义):bash运行# 方式1:使用默认合并备注 git commit # 方式2:自定义合并备注 git commit -m "resolve: 合并user-login分支冲突,统一登录按钮文本"
五、分支合并补充说明
- 合并记录查看:合并完成后,可通过
git log --graph查看分支合并的提交历史(图形化展示,更清晰):bash运行git log --graph --pretty=oneline --abbrev-commit - 合并撤销:若合并后发现问题,想撤销合并操作,可执行:bash运行
# 仅撤销合并提交,保留合并后的代码修改(可重新调整后再次提交) git reset --soft HEAD^ # 彻底撤销合并,恢复到合并前的状态(谨慎使用,会丢失合并后的所有修改) git reset --hard HEAD^ - 合并方式:Git 默认使用
recursive合并策略,适用于大多数场景,无需手动指定;复杂场景(如多分支合并)可通过-s参数指定合并策略。
总结
- 核心流程:切换到目标分支 → (可选)拉取最新代码 →
git merge <待合并分支>→ (可选)删除无用分支 - 核心命令:
git switch/checkout <目标分支>+git merge <待合并分支> - 关键操作:冲突解决(找到冲突文件 → 编辑冲突内容 →
git add标记解决 →git commit完成合并) - 快速合并:当目标分支无新提交时触发,无额外合并记录;普通合并:会创建新的合并提交记录