拿到项目地址后,如何以正确姿势开发?写给刚毕业你

198 阅读4分钟

预备

远程仓库一般有三个分支:master(上线/发布)、release(预发布)、dev(开发),你能push的只有dev。

开发阶段,所有开发者的代码都汇集在远程 dev 分支

第 1 步

clone 远程仓库代码到本地

git clone git@gitee.com:xxxxx.git

第 2 步

将远程仓库的 url 地址存入本地变量(随便啥名, 例如 mianmian ),方便之后 push 和 pull。

当然,也可以不单独存地址,git remote -v查看当前仓库的远程信息,里面有存好地址的变量,通常叫origin

git remote add mianmian git@gitee.com:xxxxx.git

第 3 步

新建本地 dev 分支

从远程仓库 clone 下来的只是远程的 master 分支,不是所有分支。现在要基于远程 dev 分支,在本地进行你的开发,例如你要做的是 login 功能。你需要新建本地 dev 分支(最好与该远程分支同名,防止错误)

// 基于本地的 master 分支,新建本地 dev 分支
git branch dev

本地 dev 分支的作用:

  1. 从远程 dev 分支拉取(pull)时,接收远程 dev 分支最新的代码
  2. 向远程 dev 分支推送(push)本地已经完成的代码

第 4 步

拉取远程仓库的 dev 分支 随后,站在本地 dev 分支上,拉取远程仓库的 dev 分支。此时在本地,你已经获取了远程仓库 dev 分支的所有代码。

// 1. 切换到本地 dev 分支
git switch dev
// 2. 拉取远程 dev
git pull mianmian dev

第 5 步

本地开发 首先,在本地新建一个,你要开发的分支,比如你今天做的功能是login

// 1. 再切换一次,务必确保你当前一定在本地 dev 分支上
git switch dev
// 2. 基于本地 dev 分支,新建本地 login 分支
git branch feature-login

当你一顿操作完成 login 功能后,先别急着推送到远程,必须先去拉取当前的 dev 分支,保证此时的 dev 分支是最新的!本地commit始终在 featur-xxx 分支上

git add .
git commit -m"完成 login 功能"
// 1. 切换到本地 dev,务必确保你当前一定在本地 dev 分支上
git switch dev
// 2. 拉取远程最新的 dev
git pull mianmian dev

随后,你的本地 dev 已经是最新的了。现在,确保你站在本地 dev 上,然后去合并本地 login 分支。

A 去合并 B 的意思是:A站着不动,把B的东西都掏出来给自己

' --no-ff ' 的意思是:不执行Git默认的快进式合并(fast-farward merge),保证版本演进的清晰

// 1. 再切换一次分支,务必确保你当前一定在本地 dev 分支上
git switch dev
// 2. 本地的 dev 去合并 本地的 feature-login
git merge feature-login --no-ff

第 6 步

推送本地 dev 到远程 最后一步:将合并了 login 功能的本地 dev 分支推送到远程仓库的 dev 分支

// 1. 合并之前最好再拉取一次 同事们在下班前也会push到远程
git pull mianmian dev
// 2. 最后一步:push
git push mianmian dev

第 7 步

下一个功能 例如你的下一个功能是 cart ,重复上述第 4 步和至第 6 步

注意点

每天早上的第一件事就是 第 4 步 :拉取远程 dev 分支,确保你开发时本地 dev 分支是最新版本,你永远都不知道同事在半夜三点饮茶,然后一顿猛操作整个大招,结果你写到中午才发现大招早就被同事写好了。

新建 feature-xxx 分支时,必须明确当前在本地 dev 分支上 拉取远程 dev 分支时,必须明确当前在本地 dev 分支上 合并 feature-xxx 分支时,必须明确当前在本地 dev 分支上 写代码时,必须明确当前在 feature-xxx 分支上

按照这个流程,每次push完当天代码后,你本地的分支停留在 dev 上,因为你push到远程的是最新完成的代码。虽然你在本地新建了很多 feature-xxx 分支,但你merge过它们,所以始终只需要 push 本地 dev 分支到远程

本地分支名取错,可以重命名:git branch -m 旧名字 新名字