3、Git工作流:初始化Git仓库,配置.gitignore,建立分支管理策略(Git Flow)

好,咱们开始聊Git。说实话,Git这东西,很多同学都会用,但真正用得好的不多。我见过太多项目,master分支上直接改代码,或者.gitignore里啥都没配,结果node_modules都提交上去了。嗯,这期咱们就把这些坑填上。

3.1 初始化Git仓库

新建一个项目,第一件事就是初始化Git。我个人习惯用命令行,简单直接:

cd your-project
git init

这就创建了一个本地仓库。但光有本地还不够,你得有个远程仓库。我一般用GitHub或GitLab,看团队习惯。创建好远程仓库后,把本地关联上去:

git remote add origin git@github.com:yourname/your-project.git

这里有个小细节——我建议用SSH协议而不是HTTPS。为什么?因为SSH不用每次输密码,省心。我之前有个项目用HTTPS,每次push都要输账号密码,烦得很。后来统一改成SSH,世界清静了。

小提示:如果你还没配SSH Key,可以运行 ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 生成,然后把公钥加到GitHub或GitLab的设置里。

3.2 配置.gitignore

接下来是.gitignore。这文件看似简单,但坑不少。说白了,它的作用就是告诉Git:哪些文件不要管。

一个Vue项目,至少得忽略这些:

# 依赖目录
node_modules/

# 构建产物
dist/
build/

# 环境变量文件(可能包含敏感信息)
.env.local
.env.*.local

# IDE配置
.vscode/
.idea/
*.swp
*.swo

# 系统文件
.DS_Store
Thumbs.db

# 日志
*.log
npm-debug.log*

# 测试覆盖率
coverage/

这里我要特别强调一下环境变量文件。我曾经见过一个项目,.env文件被提交到了仓库里,里面赫然写着数据库密码和API密钥。嗯,那场面,相当尴尬。所以记住:.env文件可以提交(里面放公共配置),但.env.local.env.development.local这些带local后缀的,一定要忽略。

警告:千万不要把 .env 文件里的敏感信息提交到Git!如果已经提交了,赶紧用 git filter-branch 或 BFG Repo-Cleaner 清理掉。

还有一个容易忽略的点——IDE配置。每个人的编辑器偏好不同,.vscode或.idea目录里的设置文件,不应该强制别人使用。所以,忽略它们。

3.3 建立分支管理策略(Git Flow)

好了,仓库初始化了,忽略文件配好了。接下来是最关键的部分——分支策略。

我个人强烈推荐Git Flow。虽然有人觉得它有点重,但对于中大型项目来说,这套流程真的能救命。我经历过没有分支策略的团队,大家直接在master上开发,结果发布前乱成一锅粥。从那以后,我再也不敢不用Git Flow了。

3.3.1 Git Flow的核心分支

分支类型 命名规则 用途
master master 生产环境代码,只接受合并,不接受直接提交
develop develop 开发主分支,所有功能分支都从这里拉出
feature feature/xxx 开发新功能,完成后合并到develop
release release/x.x.x 发布前准备,只修bug,不添新功能
hotfix hotfix/x.x.x 紧急修复生产环境bug,从master拉出,修复后合并回master和develop

你想想看,这五个分支各司其职,是不是很清晰?

3.3.2 实际操作流程

咱们走一遍实际流程。假设你接到一个新功能——用户登录模块。

第一步:从develop拉出feature分支

git checkout develop
git pull origin develop
git checkout -b feature/user-login

第二步:在feature分支上开发

该写代码写代码,该提交提交。记住一点:频繁提交,但提交信息要规范。我一般用这种格式:

feat: 添加用户登录功能
fix: 修复登录按钮点击无响应的问题
refactor: 重构登录表单验证逻辑

第三步:开发完成,合并到develop

git checkout develop
git pull origin develop
git merge --no-ff feature/user-login
git branch -d feature/user-login

这里有个关键参数——--no-ff。它的作用是禁用快进合并,保留分支历史。说白了,就是让你能清楚地看到哪些提交是属于这个功能的。我建议你养成这个习惯。

重要:合并到develop后,一定要跑一遍测试。我见过有人合并完就跑了,结果把别人的代码搞坏了。嗯,那个人就是我。

3.3.3 发布流程

当develop上的功能积累到一定程度,准备发布时:

git checkout develop
git pull origin develop
git checkout -b release/1.0.0

在release分支上,只修bug,不添新功能。修完后:

git checkout master
git merge --no-ff release/1.0.0
git tag -a v1.0.0 -m "版本1.0.0发布"

git checkout develop
git merge --no-ff release/1.0.0
git branch -d release/1.0.0

打tag这个习惯,我建议你一定要养成。为什么?因为以后出问题了,你可以快速回滚到某个版本。我曾经在一个项目里,没有打tag,结果要回滚时只能靠猜。那感觉,别提多难受了。

3.3.4 紧急修复流程

生产环境出了bug,怎么办?别慌,走hotfix流程:

git checkout master
git pull origin master
git checkout -b hotfix/1.0.1

修复完成后:

git checkout master
git merge --no-ff hotfix/1.0.1
git tag -a v1.0.1 -m "紧急修复1.0.1"

git checkout develop
git merge --no-ff hotfix/1.0.1
git branch -d hotfix/1.0.1
小技巧:hotfix分支从master拉出,修复后要同时合并回master和develop。千万别忘了合并到develop,否则下次发布时,这个修复就丢了。

3.4 总结一下

嗯,这一章的内容其实就三件事:

  • 初始化仓库——用SSH,别用HTTPS
  • 配置.gitignore——别忘了环境变量和IDE配置
  • 建立Git Flow——master、develop、feature、release、hotfix,各司其职

这套流程我用了好几年,从最初的手忙脚乱到现在的行云流水,说白了就是熟能生巧。你刚开始可能会觉得麻烦,但坚持下来,你会发现它真的能帮你省掉很多不必要的麻烦。

下一章,咱们聊聊项目目录结构的设计。这个也是个大话题,到时候见。