文章目录
命令总结
| 命令 | 作用 | 注意 |
|---|---|---|
| git -v | 查看 git 版本 | |
| git init | 初始化 git 仓库 | |
| git add 文件标识 | 暂存某个文件 | 文件标识以终端为起始的相对路径 |
| git add . | 暂存所有文件 | |
git commit -m '说明注释' | 提交产生版本记录 | 每次提交,把暂存区内容快照一份 |
| git status | 查看文件状态 - 详细信息 | |
| git status -s | 查看文件状态 - 简略信息 | 第一列是暂存区状态,第二列是工作区状态 |
| git ls-files | 查看暂存区文件列表 | |
| git restore 文件标识 | 从暂存区恢复到工作区 | 如果文件标识为 . 则恢复所有文件 |
| git rm --cached 文件标识 | 从暂存区移除文件 | 不让 git 跟踪文件变化 |
| git log | 查看提交记录 - 详细信息 | |
git log --oneline | 查看提交记录 - 简略信息 | 版本号 分支指针 提交时说明注释 |
| git reflog --oneline | 查看完整历史 - 简略消息 | 包括提交,切换,回退等所有记录 |
| git reset 版本号 | 切换版本代码到暂存区和工作区 | --soft 模式保留暂存区和工作区原本内容--hard 模式不保留暂存区和工作区原本内容--mixed 模式不保留暂存区,工作区保留(默认)先覆盖到暂存区,再用暂存区对比覆盖工作区 |
git branch 分支名 | 创建分支 | |
git branch | 查看本地分支 | |
git branch -d 分支名 | 删除分支 | 请确保记录已经合并到别的分支下,再删除分支 |
git checkout 分支名 | 切换分支 | |
git checkout -b 分支名 | 创建并立刻切换分支 | |
git merge 分支名 | 把分支提交历史记录合并到当前所在分支 | |
git remote add 远程仓库别名 远程仓库地址 | 添加远程仓库地址 | 别名唯一,地址是 .git 结尾的网址 |
| git remote -v | 查看远程仓库地址 | |
| git remote remove 远程仓库别名 | 删除远程仓库地址 | |
git pull 远程仓库别名 分支名 | 拉取 | 完整写法:git pull 远程仓库别名 远程分支名:本地分支名等价于:git fetch 和 git merge |
git push 远程仓库别名 分支名 | 推送 | 完整写法:git push 远程仓库别名 本地分支名:远程分支名 git push -u:建立通道后以后可以简写 git push |
git clone 远程仓库地址 | 克隆 | 从0得到一个远程的Git仓库到本地使用 |
一、安装
Git 是一个 分布式版本控制系统,用于跟踪和管理文件(尤其是代码)的变化,旨在帮助开发者高效协作和管理项目历史记录。
1) 下载
直接下载,一直下一步,无需额外配置
https://git-scm.com/downloads
下载安装完成之后,打开 git bash,输入git --version查看git版本

2) 配置用户信息
配置:用户名和邮箱,应用在每次提交代码版本时表明自己身份
命令:
git config --global user.name "paran"
git config --global user.email "paran@example.com"

git config --list查看配置

二、Git仓库
.git 目录是 Git 的核心数据库,存储了版本控制所需的所有元数据和对象。它是运行 git init 或 git clone 时自动创建的隐藏文件夹(默认不可见)。
三、Git的三个区域
- 工作区:实际
开发时操作的文件夹 - 暂存区:
保存之前的准备区域(暂存改动过的文件) - 版本库:提交并
保存暂存区的内容,产生一个版本快照
| 命令 | 作用 |
|---|---|
| git add 文件名 | 暂存指定文件 |
| git add . | 暂存所有改动文件 |
| git commit -m “注释说明” | 提交并保存,产生版本快照 |

klwu4@klwu4-tvmbq-28 MINGW64 /d
$ cd git_study/
klwu4@klwu4-tvmbq-28 MINGW64 /d/git_study
$ git init
Initialized empty Git repository in D:/git_study/.git/
klwu4@klwu4-tvmbq-28 MINGW64 /d/git_study (master)
$ git add ./page/login/index.css
klwu4@klwu4-tvmbq-28 MINGW64 /d/git_study (master)
$ git add .
klwu4@klwu4-tvmbq-28 MINGW64 /d/git_study (master)
$ git commit -m "登录页面"
[master (root-commit) f688ea7] 登录页面
1 file changed, 46 insertions(+)
create mode 100644 page/login/index.css
四、文件状态
Git 文件 2 种状态:
未跟踪:新文件,从未被 Git 管理过已跟踪:Git已经知道和管理的文件
| 文件状态 | 概念 | 场景 |
|---|---|---|
| 未跟踪(U) | 从未被Git管理过 | 新文件 |
| 新添加(A) | 第一次被Git暂存 | 之前版本记录无此文件 |
| 未修改(‘’) | 三个区域统一 | 提交保存后 |
| 已修改(M) | 工作区内容变化 | 修改了内容 |
使用git status -s可以查看文件状态

第一个M代表暂存区状态
第二个M代表工作区状态
MM就表示
- 文件在版本库中存在且暂存区该文件的内容发生变化
- 上一次git add 完之后工作区该文件内容又发生变化但未 git add 到暂存区
类似地,AM表示
- 该文件不在版本库中,且执行过git add(注意,执行多次git add还是A的标识,只有commit 之后,git add两次才会显示的是M)
- 上一次git add 完之后工作区该文件内容又发生变化但未 git add 到暂存区
五、暂存区使用
暂存区 -> 覆盖 -> 工作区,命令:git restore 目标文件(注
klwu4@klwu4-tvmbq-28 MINGW64 /d/git_study (master)
$ git restore ./page/login/index.html
从暂存区移除文件,命令:git rm --cached 目标文件
klwu4@klwu4-tvmbq-28 MINGW64 /d/git_study (master)
$ git rm --cached ./page/login/index.css
rm 'page/login/index.css'
六、Git回退版本
git log --oneline查看提交历史
git reflog --oneline 查看所有 Git 操作记录
如果用git回退到第一版了,
git log --oneline就看不到第二版、第三版的版本号了,可以用git reflog --oneline查看所有 Git 操作记录,找到第二版、第三版的版本号,然后还可以恢复到对应版本
klwu4@klwu4-tvmbq-28 MINGW64 /d/git_study (master)
$ git log --oneline
e106243 (HEAD -> master) 第三次提交js文件
9aa6334 第二次提交css文件
eb624dd 第一次提交html文件
回退命令:
| 命令 | 影响范围 | 适用场景 |
|---|---|---|
| git reset --soft | 仅移动 HEAD,不修改暂存区和工作目录 | 撤销提交但保留更改 |
| git reset --hard | 移动 HEAD + 重置暂存区 + 丢弃工作目录更改 | 彻底回退,丢弃所有更改 |
| git reset --mixed(默认) | 移动 HEAD + 重置暂存区,但保留工作目录 | 撤销提交和暂存,但保留文件修改 |

演示
git reset --soft 版本号
klwu4@klwu4-tvmbq-28 MINGW64 /d/git_study (master)
$ git log --oneline
74437c9 (HEAD -> master) 第三次提交js文件
bb123ab 第二次提交css文件
eb624dd 第一次提交html文件
klwu4@klwu4-tvmbq-28 MINGW64 /d/git_study (master)
$ git reset --soft eb624dd

由于暂存区的内容不变,只是版本变了,所以css和js会显示成新添加的文件
git reset --hard 版本号
klwu4@klwu4-tvmbq-28 MINGW64 /d/git_study (master)
$ git reset --hard eb624dd
HEAD is now at eb624dd 第一次提交html文件

直接把暂存区和工作区的内容都恢复成版本库里的样子
git reset --mixed 版本号
klwu4@klwu4-tvmbq-28 MINGW64 /d/git_study (master)
$ git reset --mixed eb624dd

工作区会显示未被跟踪,因为第一次提交的版本会覆盖到暂存区,暂存区里没有css和js这俩文件
七、忽略文件
.gitignore 是一个配置文件,用于告诉 Git 哪些文件或目录应该被忽略,即不被纳入版本控制。它通常位于 Git 仓库的根目录下,文件名就是 .gitignore(以点开头)。
作用
- 排除不必要的文件:比如临时文件、日志、编译生成的二进制文件等。
- 避免敏感信息泄露:比如密码、API 密钥、配置文件等(但更推荐用其他方式管理敏感信息)。
- 减少仓库体积:避免将无关的大文件提交到仓库中。
语法规则
/:忽略目录(如 /logs/ 忽略根目录下的 logs 目录)。
*:通配符(如 *.log 忽略所有 .log 文件)。
!:取反(如 !important.log 表示不忽略 important.log)。
#:注释。
**:匹配多级目录(如 **/temp 忽略所有目录下的 temp 文件)。
八、分支
1) 创建分支
git branch能查看有哪些分支
下面是一个创建新分支,并在新分支上提交版本的例子,分支指针分别指在当前分支的最新位置,HEAD指针决定我们当前的位置


2) 合并分支
假设有content 和login-bug两个分支,现在要把login-bug分支合并过来

首先要切回主分支master,然后使用git merge 分支名把其他分支合并回来,这时候master会指向最新的位置,即login-bug

合并完之后可以通过git branch -d 分支名删掉这个分支

最后还有一个content分支需要合并,可以发现content分支的起始点是C5,现在已经不在master所指向的位置了,这种情况如果要合并的话,就会产生一个新的提交记录(C11)

最终合并好的样子如下,提交记录的顺序是按照提交顺序来的,不是谁先合并谁的提交就排在前面

九、创建远程仓库
添加远程仓库地址
git remote add origin https://gitee.com/xxxx/git_study.git
origin 是远程仓库的别名,可以起其他的名字
下面是一些查看,移除远程仓库的指令
klwu4@klwu4-tvmbq-28 MINGW64 /d/git_study (master|MERGING)
$ git remote add origin https://gitee.com/xxxx/git_study.git
klwu4@klwu4-tvmbq-28 MINGW64 /d/git_study (master|MERGING)
$ git remote -v
origin https://gitee.com/xxxx/git_study.git (fetch)
origin https://gitee.com/xxxxx/git_study.git (push)
klwu4@klwu4-tvmbq-28 MINGW64 /d/git_study (master|MERGING)
$ git remote remove origin
klwu4@klwu4-tvmbq-28 MINGW64 /d/git_study (master|MERGING)
$ git remote -v
十、推送到远程仓库
git push -u origin master:master推送master分支到远程仓库origin的master分支
可以简写为git push -u origin master
klwu4@klwu4-tvmbq-28 MINGW64 /d/git_study (master|MERGING)
$ git push -u origin master
第一次会弹出登录授权,这里用的gitee,就用gitee的账号密码登录

授权完之后就推送上来了,这里的时间不是推送到远程仓库的时间,而是在本地commit的时候的时间

十一、克隆远程仓库
git clone -o 远程仓库别名 https://gitee.com/xxx/git_study.git
如果不配别名,默认就是origin
在一个文件夹下使用git clone,会产生一个和远程仓库名一样的文件夹用来存放克隆内容
使用git clone就不用git init初始化了,会自动初始化,也不用git remote add了
klwu4@klwu4-tvmbq-28 MINGW64 /d
$ git clone -o repo https://gitee.com/paran-ia/git_study.git
Cloning into 'git_study'...
remote: Enumerating objects: 35, done.
remote: Counting objects: 100% (35/35), done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 35 (delta 5), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (35/35), 4.07 KiB | 2.03 MiB/s, done.
Resolving deltas: 100% (5/5), done.
klwu4@klwu4-tvmbq-28 MINGW64 /d
$ cd git_study
klwu4@klwu4-tvmbq-28 MINGW64 /d/git_study (master)
$ git remote -v
repo https://gitee.com/paran-ia/git_study.git (fetch)
repo https://gitee.com/paran-ia/git_study.git (push)
十二、拉取远程仓库
如果本地仓库已经存在(之前已经用git clone克隆过),这时候想要获取远程仓库的最新代码,就要用git pull了
git pull origin master
拉取origin远程仓库的master分支到本地的master分支
3303

被折叠的 条评论
为什么被折叠?



