作为团队协作开发的核心工具,Git与GitLab的组合已经成为现代软件开发的标准配置。但很多开发者在首次将本地项目迁移到GitLab时,往往会遇到各种"坑"——从.gitignore配置遗漏到权限问题,再到分支管理混乱。本文将基于我多年团队协作开发的经验,带你完整走一遍从零开始的上传流程,并分享那些官方文档不会告诉你的实战技巧。
在GitLab创建新项目时,有几个关键选择会直接影响后续协作流程:
项目归属位置选择:
初始化选项的取舍:
实际案例:我曾接手过一个项目,因为初始创建时误选了Python的.gitignore模板,导致后续前端构建文件被错误忽略,团队花了三天才排查出问题。
在开始之前,请确认本地环境:
bash复制git --version # 建议2.23+
git config --list # 检查user.name和user.email配置
如果没有配置用户信息,需要先设置:
bash复制git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
进入项目目录后,初始化操作看似简单却暗藏玄机:
bash复制cd /path/to/your/project
git init
这个命令会在项目根目录创建.git隐藏文件夹,但要注意:
.gitignore文件应该在git init之后立即创建,这是血泪教训换来的经验。推荐做法:
使用专业模板:
必须包含的典型条目:
gitignore复制# 开发环境特定文件
.env
.venv
*.local
# 依赖目录
node_modules/
venv/
# 构建产物
build/
dist/
*.egg-info/
# 编辑器文件
.vscode/
.idea/
*.swp
特殊场景处理:
!例外语法标准的add-commit流程:
bash复制git add . # 添加所有未忽略文件
git commit -m "initial commit"
但更推荐精确控制首次提交:
bash复制git add src/ tests/ docs/ # 明确指定需要跟踪的目录
git commit -m "feat: initial project structure"
当不小心提交了不该提交的文件(如node_modules),需要彻底清除:
完全重置首次提交:
bash复制git update-ref -d HEAD # 删除HEAD引用
从缓存中移除错误文件:
bash复制git rm -r --cached node_modules/ # --cached保留本地文件
重建提交:
bash复制git add .
git commit -m "initial commit - with proper .gitignore"
警告:如果已经push到远程,需要额外执行git push --force,但这会重写历史,团队协作中需谨慎!
添加远程仓库时,URL有两种形式:
bash复制git remote add origin git@gitlab.com:group/project.git # SSH方式
git remote add origin https://gitlab.com/group/project.git # HTTPS方式
SSH方式需要提前配置密钥:
ssh-keygen -t ed25519当没有master/main分支推送权限时,可以:
bash复制git checkout -b dev-init # 创建并切换到新分支
git push origin dev-init
推送后,在GitLab界面:
当遇到被拒绝的大文件时:
安装git-lfs(Large File Storage):
bash复制git lfs install
指定要跟踪的大文件类型:
bash复制git lfs track "*.psd"
git lfs track "*.zip"
记得提交.gitattributes文件:
bash复制git add .gitattributes
git commit -m "add lfs tracking"
有时需要同时推送到多个远程仓库:
bash复制git remote add upstream git@gitlab.com:parent/project.git
git remote set-url --add --push origin git@gitlab.com:group/project.git
git remote set-url --add --push origin git@github.com:user/project.git
然后一次push到所有仓库:
bash复制git push origin master
在首次推送前,可以重构提交历史:
bash复制git rebase -i --root # 交互式重写整个历史
常用操作:
在项目根目录添加.gitlab-ci.yml文件:
yaml复制stages:
- test
- build
unit-test:
stage: test
script:
- npm install
- npm test
docker-build:
stage: build
script:
- docker build -t your-image .
bash复制ERROR: Repository not found
fatal: Could not read from remote repository
解决方案:
bash复制remote: GitLab: File xxx is 102.00 MB, exceeds limit of 10 MB
解决方案:
bash复制git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch path/to/large/file" \
--prune-empty --tag-name-filter cat -- --all
bash复制! [rejected] master -> master (non-fast-forward)
解决方案:
bash复制git fetch origin
git rebase origin/master
git push origin master
经过数十个项目的实践验证,这些经验尤其宝贵:
项目初始化阶段:
团队协作时:
遇到问题时:
最后一个小技巧:在项目根目录创建DEVELOPMENT.md文件,记录项目特有的Git工作流程,这对新成员特别有帮助。