GIT配置和使用
1. 了解git

使用Git管理的项目,本地拥有三个区域,分别是工作区,暂存区,本地仓库,这三个工作区还对应了三种状态,分别是已修改,已暂存,已提交。
- Workspace:工作区
- Index / Stage area:暂存区
- Local Repository:仓库区(或叫本地仓库)
- Remote Repository:远程仓库
2. git下载
3. git常用命令
配置
Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。
显示当前的Git配置
git config --list
编辑Git配置文件
git config -e [--global]
设置提交代码时的用户信息
git config [--global] user.name "[name]"
git config [--global] user.email "[email address]"
克隆远程仓库
git clone <远程仓库地址>
切换分支
git checkout <分支名>
切换分支并创建新分支
git checkout -b <新分支名>
4. git merge 和 git rebase 的区别
git merge
- 作用:把源分支的提交合并到目标分支。过程中,目标分支改变,源分支不变。
- 优点:简单易上手/保留了提交历史和时间次序/分支结构不变
- 缺点:提交历史被大量的merge操作污染/git bisect调试困难

git rebase
- 作用:清除了历史,将一个分支完全转移到了目标分支
- 优点:复杂的历史变成优雅的提交线
- 缺点:分支上下文模糊了/dev分支以及feature分支需要经常更新release分支变动到本地

4. 如何使用rebase,正确的git flow是怎样的
- 每个feature分支都有单独的分支负责人,分支负责人需要在feature分支开发过程中每天rebase release分支,同时告诉feature分支的自开发分支,及时跟进更新。
- feature子分支开发人员需要在开发完自己的任务之后,将自己分支的点合并成一个点,然后合并到feature分支。
- feature分支负责人在确定所有子分支都已开发完毕并且都压点后合并到feature分支后,交付测试验收。
- 测试验收通过后将feature到release分支等待上线。
3.1 feature负责人拉出功能分支,并告知功能开发人员相关分支已拉出,可以创建自己的开发分支。
设置了本地分支和远程分支的关联关系(-u就是--set-upstream-to参数的简写,最后本地分支名可以省略)
git checkout -b feature/xxx
git push -u origin feature/xxx
3.2 feature开发人员拉出属于自己的业务开发分支。
张三
git checkout -b feature/xxx-zhangsan
#git push --set-upstream origin feature/xxx-zhangsan
李四
git checkout -b feature/xxx-lisi
#git push --set-upstream origin feature/xxx-lisi
3.3 feature开发人员开始做业务开发
张三第一次提交
git add .
git commit -m '张三提交1'
git push
张三第二次提交
git add .
git commit -m '张三提交2'
git push
李四第一次提交
git add .
git commit -m '李四提交1'
git push
李四第二次提交
git add .
git commit -m '李四提交2'
git push
3.4 开发人员完成自己的开发任务之后将自己的提交记录合并成一个点。
git rebase -i HEAD~2
pick 1234567890123456789012345678901234567890 张三提交1
pick 1234567890123456789012345678901234567890 张三提交2
3.3 功能开发人员完成开发后,将自己的开发分支合并到主分支。
git checkout master
git merge feature/xxx
功能开发人员将自己的开发分支删除。
### 2.1 git merge
```bash
git merge <分支名>
2.2 git rebase
git rebase <分支名>
两者目的相同,都是把不同分支的提交合并到一起,但是过程有差异。