Git 开发中最常用的命令与场景
配置用户信息
安装后第一步,配置你的身份(每次提交都会记录):
# 语法:git config --global user.name "你的名字"
git config --global user.name "zhangsan"
# 语法:git config --global user.email "你的邮箱"
git config --global user.email "zhangsan@example.com"
--global:表示全局配置,对当前用户所有仓库生效。
工作区、暂存区、仓库区
先理解三个区域,命令逻辑就通了:
- 工作区:你正在编辑的文件目录(比如电脑上的项目文件夹)。
- 暂存区:临时存放即将提交的文件(相当于 “提交预览区”)。
- 仓库区:Git 保存所有版本历史的地方(
.git隐藏目录)。
本地仓库常用命令
初始化仓库
git init
执行后会生成 .git 隐藏目录,不要手动修改它。
查看文件状态
查看工作区、暂存区的文件变化:
git status
- 红色:文件在工作区,未添加到暂存区。
- 绿色:文件已在暂存区,待提交。
添加文件到暂存区
# 语法1:git add <文件路径>(添加指定文件)
git add index.html
# 语法2:git add .(添加当前目录所有文件)
git add .
# 语法3:git add *.js(添加所有 .js 文件)
git add *.js
提交到仓库区
将暂存区的文件永久保存到仓库区,并写提交说明:
# 语法:git commit -m "提交说明"
git commit -m "feat: 完成用户登录功能"
- 提交说明建议用
feat:(新功能)、fix:(修复 bug)、docs:(文档)等前缀,规范清晰。
查看提交日志: 查看所有提交历史
# 语法:git log
git log
# 简洁版日志(一行显示一个提交)
git log --oneline
版本回退: 回到之前的某个提交版本
# 语法:git reset --hard <提交ID>
# 提交ID可通过 git log --oneline 查看(比如前6位即可)
git reset --hard a1b2c3d # `--hard`:强制回退,工作区和暂存区的文件都会恢复到该版本。
git push --force-with-lease # 更安全,如果远程分支有其他人推送的新提交,会拒绝推送,避免覆盖别人的工作
分支管理
创建分支
# 语法:git branch <分支名>
git branch dev # 创建名为 dev 的分支
切换分支
# 语法1:git checkout <分支名>(旧版命令)
git checkout dev
# 语法2:git switch <分支名>(新版推荐)
git switch dev
创建并切换分支
# 语法1:git checkout -b <分支名>
git checkout -b dev
# 语法2:git switch -c <分支名>
git switch -c dev
合并分支
# 先切换到目标分支(比如 main)
git switch main
# 语法:git merge <要合并的分支名>
git merge dev # 将 dev 分支合并到 main
删除分支:
# 语法:git branch -d <分支名>
git branch -d dev
解决合并冲突
如果两个分支修改了同一个文件的同一行,合并时会报错,需手动解决:
-
打开冲突文件,Git 会标记冲突位置:
<<<<<<< HEAD 这是 main 分支的内容 ======= 这是 dev 分支的内容 >>>>>>> dev -
编辑文件,保留需要的内容,删除
<<<<<<<、=======、>>>>>>>标记。 -
重新添加并提交:
git add . git commit -m "fix: 解决合并冲突"
远程仓库
关联远程仓库
# 语法:git remote add <远程仓库名> <远程仓库地址>
git remote add origin https://github.com/zhangsan/my-project.git
origin是远程仓库的默认名称,可自定义。
推送到远程
# 首次推送(-u 表示关联本地分支与远程分支,后续可直接 git push)
git push -u origin main
# 后续推送
git push
拉取远程更新
# 语法:git pull <远程仓库名> <分支名>
git pull origin main
# 管理之后
git pull
克隆远程仓库
# 语法:git clone <远程仓库地址>
git clone https://github.com/zhangsan/my-project.git
当前分支强制回退到远程
git fetch origin
git reset --hard origin/master