Git 开发中最常用的命令与场景

2 阅读3分钟

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

解决合并冲突

如果两个分支修改了同一个文件的同一行,合并时会报错,需手动解决:

  1. 打开冲突文件,Git 会标记冲突位置:

    <<<<<<< HEAD
    这是 main 分支的内容
    =======
    这是 dev 分支的内容
    >>>>>>> dev
    
  2. 编辑文件,保留需要的内容,删除 <<<<<<<=======>>>>>>> 标记。

  3. 重新添加并提交:

    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