一,Git基本命令
Git 工作目录下对于文件的修改(增加,删除,更新) 会存在几个状态,这些修改的状态会随着我们执行 Git 命令而发生变化。

工作区:Git 初始化的那个目录就是工作区。
Git 基本命令:
-
初始化本地仓库
git init要让 Git 管理目录必须先初始化目录,当出现
.git的隐藏文件的时候就说明初始化成功了。 -
查看本地仓库状态
git status -
将文件添加到暂存区
git add 文件名 git add . #添加当前目录下所有文件 -
将暂存区文件删除
git rm --cached 文件名 #删除处于暂存区的文件 -
将文件添加到本地仓库
git commit -m '信息' 文件名 #将暂存区的文件提交到本地仓库,如果不写文件名,默认将全部处于暂存区的文件提交到本地仓库 -
查看历史版本信息
git reflog #查看本地仓库信息-
查看详细的本地仓库信息
git log #查看详细的版本信息一般会加上一堆参数来简化这个信息,同时加上命令的别名简化。
常用选项
--all显示所有分支--pretty=online将提交信息显示未一行--abbrey-commit让输出的 commitld 更加简短--graph图形化显示可以在配置文件中设置来简化这个命令。
-
-
切换版本
git reset --hard 版本号 #切换git版本号这个版本号通过
git reflog命令来查看。
1dd984d0就是版本号。查看已删除的记录:
git reflog来查看已经删除的记录。
二,Git的分支
几乎所有的版本控制系统都支持分支。使用分支意味着你可以把你的工作从主线上分离开来进行重大的 bug 修改,开发新功能。
2.1 Git分支相关命令
-
查看本地分支
git branch -
创建新分支
git branch 新分支名 -
切换分支
git checkout 分支名 git checkout -b 分支名 #创建分支并切换到该分支 -
合并分支
在 Git 中,分支合并有两种不同的实现方式:
-
变基:把一个分支的修改合并到当前分支上。
git rebase 分支名变基解释图

git rebase 的好处是让我们的提交记录非常清晰,不会出现分支的情况。
git rebase 的坏处是大部分情况下,rebase 的过程中会产生冲突的,此时,就需要手动解决冲突,然后使用
git add、git rebase --continue的方式来处理冲突。 -
分支合并
git merge 分支名分支合并解释图

不同于
git rebase的是,git merge在不是fast-forward(快速合并)的情况下,会产生一条额外的合并记录,类似 **Merge branch 'xxx' into 'xxx'** 的一条提交信息。
-
-
删除分支
git branch -d 要删除的分支 #删除分支时需要各种检查。 git branch -D 要删除的分支 #不做任何检查强制删除分支注:不能删除当前所在分支,只能删除其他分支。
2.2 分支合并的冲突问题
冲突原因: 多个分支在同一个文件的同一个位置进行了不同的修改,Git 无法替我们决定用哪个。
解决冲突方法:在合并失败后需要解决冲突的文件内容会变成:

<<<<<<< HEAD
当前分支修改的代码块
========
hot-fix分支修改的代码块 > > > > hot-fix
三方合并:在合并两个分支时,git 会检索两个分支共同的祖先,而后比较两个分支与主线节点,存在三种情况。
-
当两方都存在差异时,产生冲突
-
当只有 a 分支存在差异时,直接使用有 a 分支的 commit
-
双方不存在差异则不处理
2.3 分支在开发中使用原则与流程
在开发过程中,一般有如下分支使用原则与流程:
-
master(生产) 分支
线上分支,主分支,中小规范项目作为线上运行的应用对应的分支。
-
develop(开发)分支
是从 master 创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期的上线要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到 master 分支准备上线的。
-
feature/xxxx 分支
从 develop 创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完成后合并到 develop 分支。
-
hotfix/xxx 分支
从 master 派生的分支,一般作为线上修复 bug 使用,修复完后需要合并到 master,test,develop 等分支中。
大致流程图:
