网站公告

本次更新:没啥更新的

“钱塘江上潮信起,今日方知我是我”

Skip to content

1.核心命令 ​

字数: 0 字 时长: 0 分钟

2. 初始化仓库 ​

bash
git init

创建一个文件夹、也可以在黑窗口用 linux 命令 mkdir 创建

用 ls -la 可以看到隐藏的.git 目录

创建成功。

2. 核心命令 ​

先上一张图

状态 / 区域官话解析人话解析
未跟踪 Untracked新文件尚未被 Git 跟踪Git:这文件我还不认识
未暂存 Unstaged已跟踪文件被修改,但未加入暂存区Git:我认识它,但你这次修改还没选中
已暂存 Staged修改已通过 git add 加入暂存区已经放进“待提交清单”
本地仓库 Repository保存提交历史和版本数据git commit 后正式存档
.git 目录保存 Git 仓库核心数据Git 的“大脑 / 数据库”
状态流转:
bash
Untracked / Unstaged
        ↓ git add
      Staged
        ↓ git commit
   本地仓库

3. 查看状态 ​

bash
git status
git status --short

查看当前 Git 仓库状态。

· On branch master:当前位于 master 分支
· No commits yet:仓库还没有提交记录
· nothing to commit:当前没有文件需要提交

--short

简洁查看仓库状态;没有输出表示工作区干净,没有文件变更。

4. 新建文件 ​

下面用 linux 命令创建一个文件

然后再查看 status

就能看到 Untracked files ...

对应前面的未跟踪

5. 添加到暂存区 ​

把"未跟踪" “未暂存”的文件提交到暂存区。

bash
git add <file>
git add .

你也可以用文件名,但是如果修改或者新建的文件太多可以用 git add . 也就是通配符

这样就进入暂存区了。

6. 提交 ​

从暂存区提交到本地仓库。

bash
git commit -m "message"

我写的是第一次提交,提交后再次查看状态,就非常干净了。

7. 查看历史 ​

查看这个仓库的提交历史。

bash
git log
git log --oneline --graph --decorate

就能看到提交日志了、是谁提交的。

git log --oneline --graph --decorate 解析

参数作用人话
git log查看提交历史看以前提交过什么
--oneline每个提交只显示一行别整一大坨,简洁点
--graph用字符画显示分支关系看分支怎么分叉、合并
--decorate显示分支、标签等引用看这个提交属于哪个分支 / Tag
--all显示所有分支看这个项目有多少个分支
结果如下

然后继续编辑一下文件,当然也可以新增

然后 git add . 再次提交。

git log 就能看到两次提交了.

8.查看差异 ​

bash
git diff
git diff --staged
命令作用人话
git diff查看工作区和暂存区之间的差异看“改了但还没 git add”的内容
git diff --staged查看暂存区和最近一次提交之间的差异看“已经 git add,准备提交”的内容

工作区 --git add--> 暂存区 --git commit--> 本地仓库 ↑ ↑ git diff git diff --staged

一句话记:

· git diff:看未暂存修改
· git diff --staged:看已暂存修改

9.撤销修改 ​

bash
git restore <file>
git restore --staged <file>
命令作用人话
git restore <file>丢弃工作区中该文件的修改我改乱了,不要了,恢复成之前的样子
git restore --staged <file>把文件从暂存区移回工作区我刚 git add 了,但暂时不想提交
bash
工作区 --git add--> 暂存区 --git commit--> 本地仓库
  ↑                  ↓
restore         restore --staged

10.版本回退 ​

bash
git reset --soft HEAD~1
git reset --mixed HEAD~1
git reflog
git reset --hard HEAD~1
命令作用人话
git reset --soft HEAD~1撤销最近一次提交,但保留到暂存区commit 撤了,git add 还在
git reset --mixed HEAD~1撤销最近一次提交,并取消暂存commit 和 git add 都撤了,代码修改还在
git reset --hard HEAD~1撤销最近一次提交,并丢弃代码修改commit、暂存、代码修改全不要了
git reflog查看 HEAD 的移动记录查自己之前切过、reset 过、提交过的位置,常用于“后悔药”

先查看 git log

回退到 first commit 第一次提交的样子

查看 git log

如果想又想变回 second commit

使用 git reflog 查看总体改动日志

可以看到回退过一次

再次查看 git log

可以看到回来了

再次查看 git reflog

可以看到又移动一次

11. revert ​

bash
git revert <commit>
命令作用人话
git revert <commit>创建一个新的提交,用来反向撤销指定提交的修改不改历史,而是再提交一次“把之前那次改动抵消掉”
会生成一个新的提交,把 a12bc34 那次提交造成的修改反过来。

和 git reset 最大区别:

· reset:会移动历史,适合本地还没推送的提交
· revert:不改历史,适合已经推送到远程、大家都在用的提交

一句话记:

revert = 保留历史,用新提交撤销旧提交。

12.临时保存 ​

bash
git stash
git stash pop
命令作用人话
git stash临时保存当前未提交的修改,并恢复干净工作区代码先藏起来,我去干别的
git stash pop恢复最近一次暂存的修改,并从 stash 列表中删除把刚才藏起来的代码拿回来

简单理解:

bash
正在改代码
   ↓
git stash
临时藏起来
   ↓
切分支 / 处理其他事情
   ↓
git stash pop
恢复修改

一句话记:

stash = 临时存放修改,stash pop = 恢复并删除这份临时存档。

13. 标签 ​

bash
git tag
git tag v1.0.0
命令作用人话
git tag查看当前仓库所有标签看项目有哪些版本标签
git tag v1.0.0给当前提交创建一个名为 v1.0.0 的标签给当前版本打个“1.0.0”标记
例如:

表示给当前 HEAD 所在提交打上:

v1.0.0

一句话记:

tag = 给某个重要提交起一个固定版本名,常用于发布版本,例如 v1.0.0、v2.1.0。

Noctiflorous Garden · MIT License