Skip to content

Git 操作命令和区别

初始化和配置

初始化仓库

bash
# 在当前目录初始化 Git 仓库
git init

# 克隆远程仓库
git clone <repository-url>

配置命令

bash
# 设置全局用户名
git config --global user.name "Your Name"

# 设置全局邮箱
git config --global user.email "your.email@example.com"

# 查看配置
git config --list

# 查看特定配置
git config user.name

文件操作

添加文件到暂存区

bash
# 添加指定文件
git add <file-name>

# 添加所有修改的文件
git add .

# 添加所有文件(包括删除的文件)
git add -A

# 交互式添加
git add -i

区别说明

  • git add .:只添加当前目录下修改和新建的文件,不包含删除的文件
  • git add -A:添加所有修改、新建和删除的文件
  • git add -u:只添加修改和删除的文件,不包含新建的文件

查看文件状态

bash
# 查看文件状态
git status

# 查看简洁状态
git status -s

# 查看已暂存的文件
git diff --cached

# 查看未暂存的修改
git diff

撤销操作

bash
# 撤销工作区的修改(恢复到暂存区或最后一次提交的状态)
git checkout -- <file-name>

# 撤销暂存区的修改(保留工作区修改)
git reset HEAD <file-name>

# 撤销暂存区的修改(丢弃工作区修改)
git reset --hard HEAD <file-name>

# 删除未跟踪的文件
git clean -f

# 删除未跟踪的文件和目录
git clean -fd

提交操作

提交更改

bash
# 提交暂存区的更改
git commit -m "commit message"

# 提交所有已跟踪文件的更改(跳过 git add)
git commit -am "commit message"

# 修改最后一次提交
git commit --amend

# 修改最后一次提交的提交信息
git commit --amend -m "new message"

区别说明

  • git commit -m:只提交暂存区的更改
  • git commit -am:提交所有已跟踪文件的更改,自动添加到暂存区
  • git commit --amend:修改最后一次提交,不创建新的提交

查看历史

查看提交历史

bash
# 查看提交历史
git log

# 查看简洁的提交历史
git log --oneline

# 查看图形化的提交历史
git log --graph --oneline

# 查看指定文件的提交历史
git log <file-name>

# 查看指定作者的提交
git log --author="author-name"

# 查看最近 N 次提交
git log -n

查看差异

bash
# 查看工作区和暂存区的差异
git diff

# 查看暂存区和最后一次提交的差异
git diff --cached

# 查看工作区和最后一次提交的差异
git diff HEAD

# 查看两次提交之间的差异
git diff <commit1> <commit2>

# 查看指定文件的差异
git diff <file-name>

查看文件内容

bash
# 查看文件在指定提交时的内容
git show <commit>:<file-name>

# 查看指定提交的详细信息
git show <commit>

分支操作

创建和切换分支

bash
# 创建新分支
git branch <branch-name>

# 切换到指定分支
git checkout <branch-name>

# 创建并切换到新分支
git checkout -b <branch-name>

# 删除本地分支
git branch -d <branch-name>

# 强制删除分支
git branch -D <branch-name>

查看分支

bash
# 查看所有本地分支
git branch

# 查看所有分支(包括远程分支)
git branch -a

# 查看远程分支
git branch -r

# 查看分支的详细信息
git branch -v

合并分支

bash
# 合并指定分支到当前分支
git merge <branch-name>

# 合并但不提交
git merge --no-commit <branch-name>

# 终止合并
git merge --abort

变基操作

bash
# 将当前分支变基到指定分支
git rebase <branch-name>

# 交互式变基
git rebase -i <commit>

# 继续变基
git rebase --continue

# 跳过当前提交
git rebase --skip

# 终止变基
git rebase --abort

merge 和 rebase 的区别

  • git merge:保留完整的历史记录,创建合并提交
  • git rebase:重写历史,创建线性的提交历史

远程操作

远程仓库管理

bash
# 查看远程仓库
git remote

# 查看远程仓库详细信息
git remote -v

# 添加远程仓库
git remote add <name> <url>

# 删除远程仓库
git remote remove <name>

# 修改远程仓库 URL
git remote set-url <name> <new-url>

拉取和推送

bash
# 拉取远程仓库的更改
git pull

# 拉取远程仓库的更改并合并
git pull --no-rebase

# 拉取远程仓库的更改并变基
git pull --rebase

# 拉取远程仓库的更改但不合并
git fetch

# 推送本地提交到远程仓库
git push

# 推送指定分支到远程仓库
git push <remote> <branch>

# 推送所有分支
git push --all

# 推送并建立跟踪关系
git push -u <remote> <branch>

# 删除远程分支
git push <remote> --delete <branch>

pull 和 fetch 的区别

  • git pull:拉取远程更改并自动合并到当前分支
  • git fetch:只拉取远程更改,不进行合并

pull 和 pull --rebase 的区别

  • git pull:使用 merge 方式合并
  • git pull --rebase:使用 rebase 方式合并

标签操作

创建标签

bash
# 创建轻量标签
git tag <tag-name>

# 创建附注标签
git tag -a <tag-name> -m "tag message"

# 为指定提交创建标签
git tag <tag-name> <commit>

查看标签

bash
# 查看所有标签
git tag

# 查看标签详细信息
git show <tag-name>

# 查看匹配的标签
git tag -l "v1.*"

推送标签

bash
# 推送指定标签
git push <remote> <tag-name>

# 推送所有标签
git push --tags

# 删除本地标签
git tag -d <tag-name>

# 删除远程标签
git push <remote> --delete <tag-name>

撤销和回退

回退提交

bash
# 软回退(保留工作区和暂存区的修改)
git reset --soft HEAD~n

# 混合回退(保留工作区修改,清空暂存区)
git reset --mixed HEAD~n

# 硬回退(丢弃所有修改)
git reset --hard HEAD~n

# 回退到指定提交
git reset --hard <commit>

反向提交

bash
# 创建一个新提交来撤销指定提交的更改
git revert <commit>

# 撤销多个提交
git revert <commit1>..<commit2>

reset 和 revert 的区别

  • git reset:直接回退到指定提交,会改变历史记录
  • git revert:创建新的提交来撤销更改,保留完整历史

储藏操作

储藏当前工作

bash
# 储藏当前工作
git stash

# 储藏并添加说明
git stash save "message"

# 储藏包括未跟踪的文件
git stash -u

# 储藏所有文件(包括忽略的文件)
git stash -a

查看和应用储藏

bash
# 查看储藏列表
git stash list

# 应用最近的储藏
git stash apply

# 应用指定储藏
git stash apply <stash>

# 应用并删除储藏
git stash pop

# 应用指定储藏并删除
git stash pop <stash>

# 删除指定储藏
git stash drop <stash>

# 删除所有储藏
git stash clear

其他常用命令

查看和搜索

bash
# 查看文件是谁在什么时候修改的
git blame <file-name>

# 搜索提交历史
git log --grep="keyword"

# 搜索代码内容
git grep "keyword"

清理和优化

bash
# 清理未跟踪的文件
git clean -f

# 清理未跟踪的文件和目录
git clean -fd

# 优化仓库
git gc

# 检查仓库完整性
git fsck

别名设置

bash
# 设置别名
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit

基于 VitePress 的本地知识库