Skip to main content

GIT配置和使用

1. 了解git​

img.png

使用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 merge.png

git rebase

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

git rebase.png

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 <分支名>

两者目的相同,都是把不同分支的提交合并到一起,但是过程有差异。