【Git】02.Git常见命令+中文乱码解决
·
一、常见命令
1.初始化(只在第一次做)
git init
(切换到目录>右键Git Bash Here>用liunx命令到对应目录下>初始化)
效果: 会在当前目录 生成.get目录(隐藏的)
1.1Git 设置签名(本地库初始化后执行)
签名的作用
- 作用:区分不同开发人员的身份。
- 形式: 用户名:tom Email 地址:goodMorning@atguigu.com
- 重要辨析: 这里的签名 与登录远程库(GitHub / GitLab / Gitee 等代码托管中心)的账号、密码没有任何关系。 签名仅用于标识“是谁提交了这次代码”。
签名级别与配置命令
1. 项目级别 / 仓库级别(不带 --global)
- 作用范围:仅在当前本地仓库内有效。
- 命令:
git config user.name tom_pro git config user.email goodMorning_pro@taku.com
- 信息保存位置:
./.git/config
2. 系统用户级别(带 --global)
- 作用范围:对当前操作系统用户下的所有仓库生效。
- 命令:
git config --global user.name tom_glb git config --global user.email goodMorning_glb@taku.com
- 信息保存位置:
~/.gitconfig # Windows 示例:C:/Users/用户名/.gitconfig
级别优先级(就近原则)
- 就近原则: 项目级别 优先于 系统用户级别 若两者同时存在,采用项目级别签名
- 仅有系统用户级别签名: 以系统用户级别为准
- 两者都不存在: Git 不允许提交,必须至少配置一种签名
记忆小结(速记版)
- 签名 ≠ 远程仓库账号
- 项目级:./.git/config
- 全局级:~/.gitconfig
- 优先级:项目 > 全局 > 无 → 报错
2.基本操作(状态查看、提交、历史、版本切换、恢复、比较)
2.1查看状态——确认当前状态(好习惯)
git status
👉 看看是不是有 new file:、Changes to be committed
作用:查看工作区、暂存区、本地库的状态
输出含义:
- 当前所在分支
- 是否已提交
- 是否有可提交的文件及相应提示
最常用命令之一,随时可用
2.2添加到暂存区 / 从暂存区撤回
添加到暂存区
git add [文件名]
- 将工作区中 新建或修改 的文件加入暂存区
- 执行时会自动处理换行符转换
从暂存区撤回(不删除工作区文件)
git rm --cached [文件名]
- 仅从暂存区移除
- 工作区文件保持不变
📌 说明:
已 add的文件被修改后,无需再次 add,可直接 commit(前提是已在暂存区跟踪过)
2.3提交到本地库
标准提交(会进入 Vim 编辑提交日志)
git commit [文件名]
- 与安装 Git 时选择的编辑器有关(Vim / VSCode 等)
- 写完提交信息后::wq保存退出
带提交信息提交(推荐)
git commit -m "commit message" [文件名]
- 不进入编辑器,直接提交
撤销工作区修改
git restore <文件名>
- 丢弃工作区对该文件的修改
将暂存区文件撤回到工作区(unstage)
git reset HEAD <文件名>
- 将暂存区的修改放回工作区
2.4查看历史记录(4 种方式)
方式一:完整日志
git log
多屏控制:
- 空格:向下翻页
- b:向上翻页
- q:退出
方式二:单行简洁显示
git log --pretty=oneline
- 每行一条记录
- 显示完整 hash + 提交日志
方式三:更短 hash
git log --oneline
- hash 值缩短
- 适合快速浏览
方式四:带指针移动信息(⭐推荐)
git reflog
- 显示 HEAD 指针变化
- 包含回退、前进所需的步数
HEAD@{移动到当前版本需要的步数}
2.5版本前进 / 后退(三种方式)
📌 本质:移动 HEAD指针
方式一:基于索引值(推荐 ✅)
git reset --hard a6ace91
- 可前进也可后退
- 精确、安全
方式二:使用 ^(只能后退)
git reset --hard HEAD^^
- 一个 ^= 后退 1 步
- n 个 ^= 后退 n 步
方式三:使用 ~(只能后退)
git reset --hard HEAD~3
- ~n= 后退 n 步
- 比 ^更适合大步回退
2.6reset 三个参数对比
|
参数
|
本地库 HEAD
|
暂存区
|
工作区
|
|
--soft
|
✅ 移动
|
❌
|
❌
|
|
--mixed
|
✅ 移动
|
✅ 重置
|
❌
|
|
--hard
|
✅ 移动
|
✅ 重置
|
✅ 重置
|
📌 查看帮助:
git help reset
2.7 删除文件并找回
删除并提交到本地库
rm aaa.txt # 删除工作区文件 git add aaa.txt # 提交删除到暂存区 git commit -m "delete aaa" aaa.txt
找回文件(本质是版本回退)
情况 1:删除已提交到本地库
git reset --hard [历史版本索引]
- 回到删除前的版本
情况 2:删除尚未提交到本地库
git reset --hard HEAD
- 直接用当前 HEAD 覆盖工作区
📌 前提:删除前该文件已被提交到本地库
2.8比较文件差异
工作区 vs 暂存区
git diff [文件名]
工作区 vs 本地库历史版本
git diff HEAD^ apple.txt
或
git diff [版本索引] apple.txt
📌 支持:
- HEAD
- HEAD^
- HEAD~n
- 具体 commit hash
🔑 速记口诀
- status:看状态
- add:进暂存
- commit:进仓库
- log / reflog:看历史
- reset --hard:切版本
- diff:比差异
- restore:丢修改
3.分支管理(checkout / switch / merge / conflict)
3.1什么是分支?
在版本控制过程中,使用多条线同时推进多个任务。分支是从主干(master/main)分离出的独立开发线路,允许开发者在不干扰主线的情况下进行功能开发、Bug 修复等操作。
3.2分支的好处
- 并行开发:多个功能、多个开发人员可以同时进行,提高开发效率。
- 风险隔离:某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
- 便于维护:可以快速创建 hotfix、feature等分支,不影响主线稳定版本。
3.3分支基本操作
|
操作
|
命令
|
说明
|
|
创建分支
|
git branch [分支名]
|
例:git branch hot_fix
|
|
查看分支
|
git branch -v
|
显示所有分支及其最新提交,*标记当前分支
|
|
切换分支
|
git checkout [分支名]或 git switch [分支名]
|
例:git checkout hot_fix(推荐使用 switch)
|
|
合并分支
|
git merge [有新内容分支名]
|
必须先切换到接收修改的分支(通常是 master),再执行 merge
|
合并分支步骤详解:
- 切换到被合并分支(接受修改的分支): git checkout master
- 执行合并命令(合并有新内容的分支): git merge hot_fix
3.4解决冲突(Conflict)
冲突产生的原因:
- 两个分支修改了同一个文件的同一位置,且修改内容不一致。
- Git 无法自动判断应该保留哪一个版本,产生合并冲突。
冲突的标识:
- 分支名后会显示 | MERGING。
- 冲突文件中会出现特殊标记: <<<<<<< HEAD master 分支的内容 ======= hot_fix 分支的内容 >>>>>>> hot_fix
冲突解决步骤:
- 第一步:编辑冲突文件,手动修改内容,删除 <<<<<<<, =======, >>>>>>>等特殊符号,确保代码符合预期。
- 第二步:保存并退出编辑器。
- 第三步:将解决后的文件添加到暂存区: git add [文件名]
- 第四步:提交到本地库(注意:此时 commit 不能带具体文件名因为冲突解决后的 commit一定不能指定文件名): git commit -m "resolve merge conflict"
3.5分支使用建议
常见分支命名规范:
- main / master:主分支(稳定版本)
- develop:开发分支
- feature-xxx:功能分支
- hotfix-xxx:紧急修复分支
分支合并前建议:
- 保证当前分支是 干净状态(git status)
- 尽量先拉取最新代码
一句话总结:
分支 = 并行开发 + 风险隔离;合并 = 分支整合;冲突 = 人工裁决。
4.常见补救命令
如果 origin已存在
git remote remove origin git remote add origin https://github.com/你的用户名/你的仓库.git
如果本地是 master,远端是 main
git push -u origin master:main
如果中文文件名乱码
git config --global core.quotepath false
🧠 一条命令一条意义(速记版)
|
命令
|
含义
|
|
git init
|
初始化本地仓库
|
|
git add .
|
加入暂存区
|
|
git commit -m "xxx"
|
提交到本地库
|
|
git remote add origin url
|
绑定远程仓库
|
|
git push -u origin master
|
推送到云端
|
|
git push
|
后续推送
|
git commit是把代码“存进本地”,git push才是“传到云端”。
二、Git显示中文乱码解决
1. 解决“文件名”乱码(最核心)
git config --global core.quotepath false
- 作用:这是解决这种文件名乱码的关键。
- 原理:Git 默认会把非 ASCII 字符(如中文)转换成八进制编码显示。这个选项告诉 Git:“遇到中文文件名,直接显示原样,别转码”。
2. 解决“图形界面/编辑器”乱码
git config --global gui.encoding utf-8
- 作用:如果你以后用 Git 自带的图形界面(Git GUI)或者某些带界面的工具,这个设置能保证界面上的中文不乱码。
3. 解决“提交信息”乱码
git config --global i18n.commitencoding utf-8
- 作用:保证你写的提交说明(比如 -m "第一次提交")在显示和存储时都是正常的 UTF-8 编码。
小贴士:这三个命令都是 --global(全局配置),意味着你以后在这个电脑上的所有 Git 项目都能受益,只需要配置这一次!
更多推荐


所有评论(0)