学完就忘的典型: git, 写个文档记录一下
一些常用但不想背的东西写在前面
git config --global init.defaultBranch main #全局设置默认主分支名为main
git branch -m main #重命名当前主分支名为main
#好看的短命令 git lg
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
0x00 Quick Start
很简单, 熟记以下命令, 你就上手git了.
(细节可参考官方GitBook (1.3, 1.5, 1.6, 第二章和第三章) https://git-scm.com/book/zh/v2
git init #初始化一个仓库
git branch -m main #重命名主分支为main
git status #当前工作区的状态(是否有未提交的文件
git add . #添加所有文件进暂存区
git commit -m "some description about this commit" #提交一个commit
git log #查看HEAD之前的提交信息
git log --oneline #简洁的log
git reflog #查看所有对HEAD状态有改变的操作记录
git push #推上远程仓库
git reset --hard 03522d7 #回退到指定版本
git reset --hard HEAD^ #回退到HEAD前一个版本
git reset --hard HEAD~1 #同上, 回退到HEAD前一个版本
git reset --hard HEAD~100 #回退到HEAD前面100个版本
0x01 工作区, 暂存区 和 本地仓库
初学git的时候就只顾着赶紧用上, 这块的知识一直比较模糊, 一知半解. 现在正好系统整理一遍.
在理解这三个分区之前, 我们首先应该知道他对应的git命令阶段, 上面的图很好地展示了这些对应关系.
工作区
很简单, 直接面向用户的区域, 也就是直接写代码的地方. 在执行git add后, 文件就被放进了暂存区.
暂存区
暂存区是一个抽象的概念, 它不是一个存着工作区文件备份的具体的目录, 它只是一个索引(index), 记录还未被提交的文件信息. add之后commit之前的文件就认为是属于暂存区的.
本地仓库
commit之后, 文件的信息就会附带上commit时候填写的备注信息和提交人信息等, 从暂存区转移到本地仓库(git数据库).
远程仓库
这个很好理解, git push就会将本地仓库的新信息同步到远端的服务器, 远端的服务器维护一份最新的本地库副本, 供给团队里的每一个人同步开发进度, 共同进行开发.
0x02 可是这些是什么原理呢
Ref.
Oh Shit, Git!?! (ohshitgit.com)
Git - Book
Git 原理入门 - 阮一峰的网络日志