Git 学习笔记一
1 Git 初始化¶
1.1 初始化¶
git init
运行后,你会看到提示说“Initialized empty Git repository in .../.git/”。这表示 Git 已经在你的项目里安家了。它创建了一个名为 .git 的隐藏文件夹,这就是我们前面说的“档案柜”。
1.2 暂存提交¶
git add index.html
这个命令是告诉 Git:“嘿,请把 index.html 这个文件准备好,我下一步就要把它存到档案里了。” 这个“准备区”在 Git 里叫“暂存区”。
git commit -m "创建了网站首页"
Git 会拍下一个快照,永久保存在你的“档案柜”里。-m 后面跟着的文字是“提交信息”,是你对这次改动的描述,比如“创建了网站首页”或者“修复了一个 bug”,这非常重要,能让你以后快速看懂每次都改了什么。
1.3 其它¶
git config 命令用来配置 Git 的一些设置,其中最重要的就是告诉 Git 你是谁。它有三个主要的级别(参数),区别在于“作用范围”:
--local:只对当前这一个项目有效。配置信息保存在当前项目目录下的.git/config文件里。比如你给公司项目设置公司的邮箱,给个人项目设置个人邮箱。--global:对当前电脑用户的所有项目都有效。这是最常用的!配置信息保存在你的用户主目录下的一个文件里(比如~/.gitconfig)。我们第一次安装 Git 时,设置的就是全局的姓名和邮箱。--system:对这台电脑上的所有用户都有效。这个用得比较少,通常是服务器管理员才会配置。
我们可以设置别名:
git config --global alias.st status
git config --global alias.ci commit
git config --global alias.co checkout
git config --global alias.lg "log --oneline --graph --decorate --all"
设置完之后,你就可以这样用了:
git st就等同于git statusgit ci -m "..."就等同于git commit -m "..."git lg会给你一个非常酷炫、清晰的单行历史日志图。
2 Git 暂存区¶
| 命令 | 作用 | 比喻 |
|---|---|---|
git add <file> |
将工作区的修改添加到暂存区 | 把书桌上写好的手稿,放进“最终稿文件夹” |
git commit |
将暂存区的所有内容提交到仓库 | 命令出版社,将“最终稿文件夹”里的所有内容印刷存档 |
git diff |
查看工作区和暂存区的差异 | 对比“书桌”和“最终稿文件夹” |
git diff --staged |
查看暂存区和仓库最新版本的差异 | 对比“最终稿文件夹”和“已出版的最新版” |
git commit -a |
(不推荐) 跳过add,直接提交所有已跟踪文件的修改 |
贪图方便,把书桌上所有东西(除了新来的)一股脑丢给出版社 |
git stash |
临时保存工作区和暂存区的修改,清空工作区 | 把书桌上所有东西临时塞进抽屉,以清空桌面 |
git stash pop |
恢复最近一次stash的内容 |
把抽屉里的东西再拿出来放回书桌 |
3 Git 对象¶
- Blob (数据对象)--内容
- Tree (树对象)--目录清单
- Commit (提交对象)--快照
SHA1 哈希值就是根据对象的内容算出来的一个绝对唯一的ID,用来保证数据的完整性和唯一性。
4 Git 重置¶
把你的项目历史想象成一条长长的路径,路径上有很多存档点(commit)。master 是一个旗子,插在最新的存档点上。而 HEAD 就是一个“你在这里”的地图标志,告诉你当前正站在哪个存档点上。
| 特性 | HEAD |
master |
|---|---|---|
| 本质 | 指向当前工作位置的指针 | 默认主分支的名称,也是一个指针 |
| 指向对象 | 可以指向一个分支(如 master),也可以直接指向一个commit |
始终指向 master 分支上的最新 commit |
| 如何移动 | 通过 git checkout 或 git switch 命令来改变指向 |
当在 master 分支上产生新 commit 时自动向前移动 |
| 常见状态 | HEAD -> master -> commit 或 HEAD -> commit (分离头指针) |
master -> commit |
| 目的 | 标识用户当前的工作区状态 | 标识一条主要的、稳定的开发线 |
git reset --soft A(温柔的重置)git reset --mixed A(中等重置 - 默认模式)git reset --hard A(硬核重置 - 危险!)reflog是最后的安全网
参考链接:
https://www.worldhello.net/gotgit/