先看这个图,了解工作区、版本库、stage、HEAD、master、add、commit这几个概念。
(忘记自己从哪儿盗的图了...)
git_relearn文件夹里就是一个工作区(working directory);
.git隐藏的文件夹就是版本库(repositary);
版本库里包含暂存区(stage);
git为我们自动创建的第一个分支master;
git commit就是往分支master提交更改;
指向master的指针是HEAD
一.前期准备
git config --global user.name "hdn" #设置自己的名字
git config --global user.email "123456@qq.com" # 邮箱
pwd # 查看当前版本库所在的目录(版本库又叫仓库repository。该目录下的文件都可以被git管理起来:包括文件的删除更改等都会给git追踪)
touch test.txt # 创建test.txt文件
git init # 初始化一个git仓库(在哪个目录下git init,就是定义当前目录为git仓库repository)
git add test.txt #将自己创建的test.txt存入版本库的stage暂存区里
git commit -m"create a test.txt" # 将已经放到stage里的test.txt文件提交到master里,m后面的参数是对本次提交的文字说明。可以多次add,然后一次commit
二.查看
git status # 查看仓库当前状态
git diff test.txt # 查看对test.txt做了什么修改
git diff HEAD -- test.txt # 查看test.txt当前版本的修改状态
三.版本
git log # 查看修改的历史记录:从最近到最远的提交依次显示。
git log --pretty=oneline # 字面意思:将记录以一行的方式显示
git reset --hard HEAD^ # 回退到上一个版本;HEAAD^^为回退到上上一个版本;HEAD~100为回退到上100个版本
git reset --hard 4fa142c # 4fa142c为某次修改事件A的版本号(commit ID)。对应git log命令下显示的前七位数。那么此时会回退到事件A时刻的修改记录
git reflog # 查看每次修改对应的版本号(commit ID)
四.提交
每次提交之后,工作区(working directory)就会变成clean。
五.撤销
git checkout --test.txt # 撤销在工作区的修改,让这个文件回到最近一次git commit或者git add的状态
git rest HEAD test.txt # 回退到上一个操作。即撤销掉test.txt在stage(暂存区)的缓存(to unstage)。git reset 是回退版本,HEAD是指当前版本
六.删除
rm test.txt # 删除在工作区里的test.txt文件
git rm test.txt # 从版本库里删除test.txt
git commit -m"remove test.txt" # 提交本次删除,并标记为"remove test.txt"
git checkout -- test.txt # 在未从版本库仅仅是从工作区删除的文件可以通过此命令恢复。即用版本库的版本文件替换工作区里的文件