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.0v1.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

四、补充说明(本地操作延伸)

  1. 若后续需要将本地分支 / 标签推送到远程仓库(比如 GitHub/GitLab),可执行:bash运行# 推送单个分支到远程 git push origin <分支名> # 推送所有本地分支到远程 git push origin --all # 推送单个标签到远程 git push origin <标签名> # 推送所有本地标签到远程 git push origin --tags
  2. 分支命名规范(建议遵循,提高可读性):
    • 主分支:master/main(生产环境分支,禁止直接开发)
    • 开发分支:dev/develop(日常开发合并分支)
    • 功能分支:feature/xxx(比如feature/user-center
    • bug 修复分支:bug/xxx/hotfix/xxx(比如hotfix/login-error
  3. 标签命名规范(建议遵循语义化版本):v<主版本>.<次版本>.<修订版本>(比如v1.0.0v1.2.3

总结

  1. 核心流程:git init(初始化仓库)→ 分支操作(创建 / 切换 / 合并)→ 标签操作(标记版本)
  2. 分支核心命令:git branch(查看 / 创建)、git checkout/git switch(切换)、git merge(合并)、git branch -d(删除)
  3. 标签核心命令:git tag(查看 / 创建轻量标签)、git tag -a -m(创建附注标签)、git show(查看详情)、git tag -d(删除)
  4. 分支用于并行开发,标签用于标记正式版本,两者配合使用可高效管理本地代码版本

如何合并分支?

你想详细了解 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. 手动解决冲突的步骤

  1. 找到冲突文件:终端会列出冲突文件路径(如上的 src/user/login.js),打开该文件
  2. 识别冲突标记:文件中会出现 Git 自动添加的冲突标记,格式如下:javascript运行<<<<<<< HEAD // 表示当前目标分支(dev)的代码 const loginBtnText = "登录"; // 目标分支的内容 ======= // 分隔线,上下分别是两个分支的冲突代码 const loginBtnText = "用户登录"; // 待合并分支(feature/user-login)的内容 >>>>>>> feature/user-login // 表示待合并分支的名称
  3. 编辑冲突内容:删除冲突标记(<<<<<<< HEAD=======>>>>>>> feature/user-login),并根据业务需求保留正确的代码(可保留其中一个,或整合两者),例如最终修改为:javascript运行// 整合后的正确代码(按需调整) const loginBtnText = "用户登录";
  4. 标记冲突已解决:将解决后的文件添加到暂存区,告诉 Git 该冲突已处理:bash运行# 添加单个冲突文件 git add src/user/login.js # 若多个冲突文件,可批量添加 git add .
  5. 完成合并提交:冲突解决后,执行 commit 命令完成最终的合并(此时无需填写备注,Git 会自动生成合并备注,也可自定义):bash运行# 方式1:使用默认合并备注 git commit # 方式2:自定义合并备注 git commit -m "resolve: 合并user-login分支冲突,统一登录按钮文本"

五、分支合并补充说明

  1. 合并记录查看:合并完成后,可通过 git log --graph 查看分支合并的提交历史(图形化展示,更清晰):bash运行git log --graph --pretty=oneline --abbrev-commit
  2. 合并撤销:若合并后发现问题,想撤销合并操作,可执行:bash运行# 仅撤销合并提交,保留合并后的代码修改(可重新调整后再次提交) git reset --soft HEAD^ # 彻底撤销合并,恢复到合并前的状态(谨慎使用,会丢失合并后的所有修改) git reset --hard HEAD^
  3. 合并方式:Git 默认使用 recursive 合并策略,适用于大多数场景,无需手动指定;复杂场景(如多分支合并)可通过 -s 参数指定合并策略。

总结

  1. 核心流程:切换到目标分支 → (可选)拉取最新代码 → git merge <待合并分支> → (可选)删除无用分支
  2. 核心命令:git switch/checkout <目标分支> + git merge <待合并分支>
  3. 关键操作:冲突解决(找到冲突文件 → 编辑冲突内容 → git add 标记解决 → git commit 完成合并)
  4. 快速合并:当目标分支无新提交时触发,无额外合并记录;普通合并:会创建新的合并提交记录
© 版权声明

相关文章