// 撤回修改到最近一次add或最近一次commit状态,
// 例如已经add到暂存区, 然后再修改, 会回到最近的add的状态;
// 例如已经commit提交了, 然后再修改, 会回到最近的commit的状态;
// 即撤销修改
git checkout -- filename
// 将修改从暂存区撤回到工作区, 即已经add了, 需要回到未add的状态
// 不加参数, 会保留修改
// 即撤销add
git reset HEAD filename // 将修改从暂存区撤回到工作区
// commit之后, HEAD指针会指向最新的commit
// HEAD^ 标识上个commit
// HEAD^^ 标识上上个commit
// HEAD~100 标识上100个commit
// HEAD@{1} 标识下1个commit
// HEAD^可以是具体的commit号
// 即撤销commit
// hard标识不保留修改, 默认是mixed, 保留修改
// soft标识回到add的状态
git reset --hard HEAD^ filename // 将修改从暂存区撤回到工作区
// 关联分支
// 关联当前分支到远程的dev
// 下次push就不用指定远程分支了
git push -u o dev
// 创建分支并检出分支
git checkout -b => 相当于 git branch + git checkout
// 将dev合并到当前分支
git merge dev
// 删除分支
git branch -d
// 暂时存储当前修改
git stash
// 释放并删除暂时存储
git stash pop