1 git介绍
Git 是一种分布式版本控制系统,它可以不受网络连接的限制,配合github或者gitee,是做项目版本管理和文档版本管理的首选[1]。

工作区:就是本地能看到的目录,本地项目文件夹就是一个工作区。
暂存区:本地版本库里存了很多东西,其中最重要的就是称为 stage(或者叫index)的暂存区,还有 Git 为我们自动创建的第一个分支 master,以及指向 master 的一个指针叫 HEAD。
本地版本库:工作区下有一个隐藏目录 .git,这个属于工作区,是 Git 的版本库。
远程版本库:一般指的是 Git 服务器上所对应的仓库,由master用户创建。
2 创建远程仓库
创建远程仓库的方式有两种:
1.登录github网页版手动创建,github犯病容易断网
2.在github上申请Personal access tokens,使用git命令创建远程仓库
2.1 git命令创建远程创库
1.在github上申请自己的api token

2.这个只需配置一次,点击Generate new token,进入权限管理页面,勾选repo,gist,delete_repo三项生成token密钥串
3.本地使用git命令创建远程仓库[3]
#创建新创库
$curl -u ’用户名:token密钥‘ https://api.github.com/user/repos -d '{ "name": "test","description":"This is a test repository","public":true }'
#本地关联远程仓库
$git remote add origin git@github.com:hxf233333/test.git
#查看远程仓库
$git remote -v
4.本地使用git命令删除远程仓库[4]
curl -XDELETE -H 'Authorization: token token密钥串' "https://api.github.com/repos/用户名/仓库名 "
3 git入门使用
3.1 本地创建一个新仓库
#创建工作区目录
mkdir test
#新建文件
touch README.md
#在当前工作区初始化本地仓库
git init
#将README.md添加到暂存区,如果想添加所有文件可用git add . 命令,这时候可通过git status看到文件当前状态
git add README.md
#提交文件变动到版本库,通过 -m 参数可直接在命令行里输入提交描述文本,可追加多行
git commit -m "first commit"
#强制修改当前分支为master分支
git branch -M master
#本地关联远程仓库:
git remote add origin https://github.com/hxf233333/test.git
#将本地的仓库内容改动推送到服务器master分支
git push -u origin master
3.2 已有仓库进行修改
#将远程版本库拷贝到本地,同时也将分支都拷贝到本地
git clone https://github.com/hxf233333/test
#进入工作区目录
cd test
#使用vim修改文件
vim test.cpp
git add 文件名或目录 #添加到暂存区
git rm 文件名或目录 #从暂存区删除
#从暂存区提交文件变动到本地版本库,通过 -m 参数可直接在命令行里输入提交描述文本,可追加多行
git commit -m "描述信息"
#本地关联远程仓库:
git remote add origin https://github.com/hxf233333/test.git
#将本地的仓库内容改动推送到服务器master分支
git push -u origin master
4 分支基本操作
#将远程版本库拷贝到本地,同时也将分支都拷贝到本地
git clone https://github.com/hxf233333/test
#进入工作区目录
cd test
#commit之后才会真正建立master分支,此时才可以建立其它分支
git add .
git commit
git branch develop
#查看所有分支
git branch
#切换到develop分支
git checkout develop
#使用vim修改文件
vim test.cpp
git add 文件名或目录 #添加到暂存区
git rm 文件名或目录 #从暂存区删除
#从暂存区提交文件变动到本地版本库,通过 -m 参数可直接在命令行里输入提交描述文本,可追加多行
git commit -m "描述信息"
#本地关联远程仓库:
git remote add origin https://github.com/hxf233333/test.git
#将本地的仓库内容改动推送到服务器develop分支
git push -u origin develop
5 管理分支
获取分支,某次提交等 git 信息[2]
# 显示暂存区和工作区的差异
$ git diff
# 比较暂存区和版本库差异
$ git diff --staged
# 显示多个分支之间的差异
$ git diff [first-branch]...[second-branch]
# 将其他分支合并到当前分支
$ git merge branchName
# 在合并时创建一个新的master分支提交,这样可以生成 merge 提交变化
$ git merge --no-ff branchName

默认情况下,Git 执行”快进式合并“(fast-farward merge),会直接将 Master分支指向 Develop 分支,使用 --no-ff 参数后,会执行正常合并,在 Master分支上生成一个新节点,保证版本演进更清晰。
reference:
[1]https://mp.weixin.qq.com/s/Q_O0ey4C9tryPZaZeJocbA
[2]https://mp.weixin.qq.com/s/bZS5c2oKkUipqN2xV1EVVg