how to use git

/**git管理文件夹可以分为三层,
工作区:实际能看到的文件夹
暂存区stage:.git文件夹内隐藏的区域
暂存区分支master仓库:存放所有版本的文件
**/

/////////////////////////////////////////////////////////////////////
//初始化git仓库:必须到想要建仓库的目录下
git init

//添加文件到git仓库:分两步,第二步的message是本次提交的说明
//add命令实际是将修改文件从工作区存入暂存区中
//commit命令则将暂存区内的文件全部提交到仓库
git add <file>
git commit -m <message>

//查看是否有文件被修改过
git status

//查看修改的内容
git diff  //查看工作区与暂存区的差异,暂存区为空时则与仓库比较
git diff --cached  //查看暂存区与仓库的差异
git diff HEAD //查看暂存区与仓库最新版本的差异
////////////////////////////////////////////////////////////////////
****************************************************************************
////////////////////////////////////////////////////////////////////
//查看提交日志:HEAD指针指向的是当前版本
git log

//版本回退:会修改文件内容以及提交日志的内容
git reset --hard HEAD~1  //回退到上一个版本
git reset --hard HEAD~10 //回退到10个版本前

//回到未来:根据commit id来判断指向的版本,版本号只需提供前几位
git reset --hard <commit id>

//查看命令日志:包含每一次提交、版本变换
git reflog

//丢弃工作区的修改
git checkout -- <file>

//丢弃暂存区的修改
git reset HEAD <file>
////////////////////////////////////////////////////////////////////
****************************************************************************
////////////////////////////////////////////////////////////////////
//本地仓库关联一个远程仓库:其中origin是为远程仓库指定的名字,server-name一般是github.com
git remote add origin git@server-name:path/repo-name.git

//查看远程库信息:远程库名字与远程库链接
git remote -v

//删除远程库:根据名字删除
git remote rm origin

//将远程库克隆到本地库
git clone git@server-name:path/repo-name.git
////////////////////////////////////////////////////////////////////
****************************************************************************
////////////////////////////////////////////////////////////////////
//查看分支
git branch

//创建分支
git branch <branch-name>

//切换分支
git checkout <branch-name>  
git switch <branch-name>

//创建并切换分支
git checkout -b <branch-name>
git switch -c <branch-name>

//合并某分支到当前分支:默认使用fast-forward模式合并,合并后不会产生日志
git merge <branch-name>
//使用普通模式合并,会产生日志
git merge --nn-ff -m "message" <branch-name>

//删除分支:-d删除已合并分支,-D删除未合并分支
git branch -d <branch-name>
git branch -D <branch-name>
////////////////////////////////////////////////////////////////////
****************************************************************************
////////////////////////////////////////////////////////////////////
//保存工作现场:当前分支工作尚未完成,无法add,又需要去其他分支解决bug,
//此时就需要保存当前分支的现场,解决完bug后再回到当前分支回复现场
git stash  //保存现场
git stash list //查看以保存的现场
git stash pop  //恢复现场

//将指定的修改复制到当前分支上
git cherry-pick <commit-id>
////////////////////////////////////////////////////////////////////
****************************************************************************
////////////////////////////////////////////////////////////////////
//本地仓库推送到远程库
git push origin <branch-name>

//当多人同时推送时,可能会发生冲突,推送失败,此时先抓取远程的新提交
git pull

//建立本地分支与远程分支的关联,关联后才能pull
//将本地的<branch-name>与远程库origin的<branch-name>关联
git branch --set-upstream-to=origin/<branch-name> <branch-name>

//分叉的提交日志整理成直线
git rebase
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//打标签
git tag v1.0
git tag v1.0 <commit-id>  //指定提交id
git tag -a v1.0 -m "message" <commit-id>  //携带说明文字

//查看标签列表
git tag

//查看指定标签信息
git show <tag-v>

//删除标签
git tag -d <tag-v> //删除本地标签
git push origin :refs/tags/<tag-v>  //删除远程仓库标签

//推送标签
git push origin <tag-v>
git push origin --tags //推送全部标签
////////////////////////////////////////////////////////////////////