Git 常用命令速览
·2 分钟·1,456 字·请注意时效性
先放一张常用命令总览图:

#最常用的 Git 命令
#配置默认信息
在首次使用 Git 时,需要配置用户名和邮箱:
git config --global user.name "[username]"
git config --global user.email "[email_address]"
#初始化版本库
# 将当前目录初始化为 Git 版本库
git init
# 重命名当前分支为 main
git branch -M main
推荐使用 main 作为主分支名,参见 GitHub 官方说明
#关联远程仓库
git remote add origin [repo_url]
#暂存更改
# 暂存所有修改(包括新增、修改、删除)
git add .
# 或者使用
git add -A
#提交更改
git commit -m "[commit_message]"
#推送到远程仓库
# 首次推送需要 -u 参数建立追踪关系
git push -u origin main
# 之后可以直接使用
git push
#进阶常用命令
#一、修改与提交操作
#查看当前版本库状态
git status
#修改最后一次提交
如果提交后发现提交信息写错了,可以使用 --amend 修正:
git commit --amend
运行后会进入编辑器(通常是 vim),按 i 进入编辑模式,修改完成后按 Esc 退出编辑模式,输入 :wq 保存并退出。
#二、分支操作
#新建分支
git branch [branch_name]
#切换分支
# 切换到指定分支
git checkout [branch_name]
# 切换到上一个提交
git checkout HEAD^
# 切换到前 3 个提交
git checkout HEAD~3
#删除本地分支
git branch -d [branch_name]
#新建并切换到指定分支
# 创建并切换分支(推荐使用)
git checkout -b [branch_name]
# 或者使用新命令
git switch -c [branch_name]
#合并分支
将指定分支合并到当前分支:
git merge [branch_name]
#变基操作(Rebase)
把当前分支的提交重新应用到目标分支上:
git rebase [branch_name]
注意:rebase 会改写提交历史,如果目标分支是
main、master等主分支,建议将主分支也 rebase 到最新的更改,保持历史的线性。
#三、撤销操作
#软撤销(Soft Reset)
只撤销 commit 记录,保留所有文件改动:
git reset --soft HEAD^
这个命令会把上一次提交撤销,但改动的文件仍然保留在暂存区,可以重新修改后再提交。
如果只是想修改提交信息,推荐使用:
git commit --amend
#硬撤销(Hard Reset)
撤销 commit 的同时,删除所有文件改动,恢复到指定提交的状态:
# 撤销上一个提交
git reset --hard HEAD^
# 撤销前 3 个提交
git reset --hard HEAD~3
危险操作警告:硬撤销会永久删除未提交的代码,不懂的话千万别乱用,否则一下午写的代码全白给!
#误操作恢复
如果不小心误删了代码,还有一线希望,可以通过 reflog 查找历史记录:
# 查看所有操作记录
git reflog
# 找到误删前的 commit_id,恢复到该版本
git reset --hard [commit_id]
#四、查看提交历史
# 查看 Git 日志(按 q 退出)
git log
# 查看上一次提交(或指定 commit_id 的提交)
git show [commit_id]
# 查看指定文件的修改历史
git log -p [file_name]
# 以列表形式查看指定文件的每行修改记录
git blame [file_name]
# 以图形化方式查看分支历史
git log --graph --pretty=oneline --abbrev-commit
#附录:Git 命令速查表
#基础配置
# 初始化版本库
git init
# 配置全局用户信息
git config --global user.name "[username]"
git config --global user.email "[email_address]"
# 查看版本库状态
git status
# 克隆远程仓库(Git 协议最快)
git clone [repo_url]
# 关联远程仓库
git remote add origin [repo_url]
#文件操作
# 将所有修改添加到暂存区
git add .
# 通配符添加
git add * # 添加所有文件
git add *.js # 添加所有 .js 文件
git add Hello* # 添加 Hello 开头的文件
git add *Hello # 添加 Hello 结尾的文件
git add Hello? # 添加 Hello 后跟一个字符的文件
# 查看文件修改内容
git diff [file_name]
# 从版本库中删除文件(同时删除本地文件)
git rm [file_name]
# 丢弃工作区的修改
git checkout -- [file_name]
# 取消暂存区的修改
git reset HEAD [file_name]
#提交管理
# 提交更改
git commit -m "[commit_message]"
# 查看提交历史
git log
git log --pretty=oneline # 单行显示
git log --graph --abbrev-commit # 图形化显示
# 查看指定提交
git show [commit_id]
# 查看操作历史
git reflog
#分支操作
# 查看所有分支
git branch
# 创建分支
git branch [branch_name]
# 切换分支
git checkout [branch_name]
# 创建并切换分支
git checkout -b [branch_name]
# 删除分支
git branch -d [branch_name] # 安全删除
git branch -D [branch_name] # 强制删除
# 合并分支
git merge [branch_name]
git merge --no-ff -m "[comment]" [branch_name] # 禁用快进合并
#远程操作
# 拉取远程更新
git pull
# 推送到远程
git push -u origin [branch_name] # 首次推送
git push # 后续推送
# 推送标签
git push origin [tag_name] # 推送指定标签
git push origin --tags # 推送所有标签
#版本回退
# 回退到上一个版本
git reset --hard HEAD^
# 回退到上两个版本
git reset --hard HEAD^^
# 回退到上 100 个版本
git reset --hard HEAD~100
# 回退到指定版本
git reset --hard [commit_id]
#标签管理
# 查看所有标签
git tag
# 创建标签
git tag [tag_name] # 在当前提交打标签
git tag [tag_name] [commit_id] # 在指定提交打标签
git tag -a [tag_name] -m "[message]" [commit_id] # 创建附注标签
# 查看标签信息
git show [tag_name]
# 删除标签
git tag -d [tag_name]
#暂存工作区
# 暂存当前修改
git stash
# 查看暂存列表
git stash list
# 恢复暂存内容
git stash pop # 恢复并删除暂存
git stash apply # 恢复但保留暂存—— 本文完 ——