拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从零到一:Git安装踩坑与GitLab部署协作全流程手册

从零到一:Git安装踩坑与GitLab部署协作全流程手册 从零到一打通Git安装踩坑实录与GitLab全流程操作手册你是不是也遇到过这种场景换了新电脑想拉代码继续干活结果Git都没装好好不容易装完了又在GitLab上败下阵来——连不上、推不上、报错看不懂。我这些年帮团队接过不少次这种“烂摊子”也无数次把自己坑进“git安装”和“gitlab操作”的细节里今天干脆把这两件事串成一条线从装好Git到在GitLab上正常协作把每一步的原理、步骤和坑全部摊开讲。这篇文章适合刚入门的开发者也适合那些“会用但说不清为什么”的老手文里所有的命令和配置我都实测过照着抄就行。1. 先说清楚一件事Git和GitLab到底是什么关系很多新手会把Git和GitLab当成同一个东西实际上它们是两个完全独立的角色。Git是一个分布式版本控制系统跑在你本地负责记录项目文件的每一次变更、支持分支合并、允许你退回任意历史版本GitLab是一个基于Web的代码托管平台用来集中存放Git仓库提供权限管理、合并请求Merge Request、CI/CD流水线等协作能力。打个比方Git是你的“本地记事本”GitLab是团队共用的“文件柜”——你写完内容放进抽屉别人再从抽屉里取走接着改。理解了这层关系你就能明白为什么操作流程通常是本地装Git → 配置身份和密钥 → 在GitLab上建仓库 → 把本地仓库关联到远程 → 推送/拉取代码。每走一步目的都是让“本地记事本”和“远程文件柜”之间有一条稳定、安全的同步通道。还有一点值得提前说明GitHub、Gitee和GitLab在核心的Git操作上完全一致区别只在平台界面的功能设计上。也就是说你学会了GitLab上的操作换到GitHub上基本就是“换个网址继续干”这也是我推荐大家认真把Git基础打扎实的原因——一次学会处处可用。2. Git安装的全平台实操与高频配置细节2.1 Windows平台下载、安装与PATH的坑Windows下安装Git最稳妥的方式是去Git官网下载安装包国内网络受限时可以找靠谱的镜像站。下载得到的是一个exe文件双击后基本可以一路Next但有几个选项值得单独说。最关键的是“Adjusting your PATH environment”这一步务必选择“Git from the command line and also from 3rd-party software”。这样装完以后你在CMD、PowerShell或者任何终端里直接输入git命令系统都能找到它。我之前见过有人选了默认的“Use Git from Git Bash only”导致在PowerShell里敲git提示“不是内部或外部命令”排查了半天才发现是PATH没配好。接下来是“Choosing the default editor”和“Adjusting the name of the initial branch”新版安装器默认分支名是master如果你习惯main可以改但不改也不影响后续操作。还有一个容易忽略的选项是“MinitTTY vs Windows default console window”保持默认的MinitTY即可这关系到Git Bash里的终端体验和中文显示实测下来默认方案最稳。安装完成后打开CMD或PowerShell输入git --version验证一下能输出版本号就说明装成功了。这一步我每次都会做装完先验证避免后续所有命令都“不生效”的尴尬。2.2 macOS与Linux包管理器一行搞定macOS上如果装了Homebrew直接brew install git即可装完同样是git --version验证。Linux系统则看发行版Ubuntu/Debian用apt install gitCentOS/RHEL用yum install git或者dnf install git。不同系统之间Git的使用完全一样差别只在安装命令所以不需要因为换电脑而重新学一遍。顺带说一个背景GitLab新版指特定大版本起对操作系统有最低要求比如官方在更新说明里提到高版本GitLab更偏向Ubuntu 24.04这类新发行版。如果你是在本地用Docker跑GitLab宿主机系统别太旧否则安装依赖时容易踩兼容性的坑。这个问题我们在后面Docker部署章节会展开讲。2.3 安装后的第一件事配置身份信息装完Git第一件事不是急着去拉代码而是先告诉Git“你是谁”。这两个配置项几乎决定了你之后每一次提交commit的作者信息git config --global user.name 你的名字 git config --global user.email 你的邮箱注意两个细节。第一--global表示全局生效这台电脑上所有仓库都会用这个身份如果某个项目需要特殊身份可以在该项目目录下去掉--global单独配置此时项目级配置会覆盖全局配置。第二邮箱最好和你GitLab账号的邮箱保持一致这样提交记录才能正确关联到你的账号头像和用户名否则团队看代码历史时会看到一堆“无名氏”提交。查看当前配置用git config --list它能列出所有生效的配置项排查问题时这个命令很常用。我遇到过一次很诡异的情况某次提交显示的作者邮箱是错的查了半天原来是Global配置里的邮箱拼错了一个字母。2.4 换行符与编码Windows用户的隐性问题Windows和Linux/macOS的换行符不一样CRLF与LFGit默认会做转换。安装Git时建议保持默认的“Checkout Windows-style, commit Unix-style line endings”即检出到工作区时转成Windows换行提交到仓库时转成Unix换行。这样团队协作时仓库里的文件始终保持LF避免因为换行符差异导致的“无意义改动”。中文文件名、中文提交信息偶尔会出现乱码建议在Git Bash里执行git config --global core.quotepath false这个配置的作用是让Git以原始字符显示中文文件名而不是转义成八进制序列。对中文用户来说这条属于“不配会难受配了没烦恼”的典型。3. 用Docker部署GitLab社区版最快把服务跑起来3.1 为什么推荐Docker部署很多团队刚开始用GitLab时第一反应是直接装在物理机或云服务器上。但裸机安装GitLab依赖特别多——PostgreSQL、Redis、Nginx等等版本不匹配就能折腾一整天。用Docker部署的话所有的依赖都封装在容器里只要镜像能拉下来命令一跑服务就起来了后续升级、迁移也简单得多。Docker部署另一个好处是环境隔离。同一个服务器上可以同时跑多个不同版本的GitLab容器测试新版本时不必担心影响生产环境。我自己的经验是个人学习或小团队内部使用Docker方式是最省心的选择。3.2 部署命令与关键参数解析部署GitLab社区版核心命令就是一条docker run但里面的参数值得逐条理解。我的常用模板如下sudo docker run --detach \ --hostname gitlab.example.com \ --publish 443:443 --publish 80:80 --publish 22:22 \ --name gitlab \ --restart always \ --volume /srv/gitlab/config:/etc/gitlab \ --volume /srv/gitlab/logs:/var/log/gitlab \ --volume /srv/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest逐条说下关键点。--hostname决定容器内部的GitLab用哪个域名或IP生成仓库地址这个配置会影响你克隆代码时看到的URL务必提前想好。如果你只用IP访问可以写成--hostname 192.168.1.100这样的形式但要注意后续改了IP仓库地址会跟着变项目成员就需要更新远程地址。端口映射方面80端口是HTTP访问入口443是HTTPS入口22是SSH端口。默认命令里把22映射出去了如果你本机22端口被占用比如你已经跑着SSH服务就把宿主机的22改成别的端口例如--publish 2222:22此时SSH克隆地址会变成ssh://git主机IP:2222/组名/项目.git这个细节很多人不知道连不上时排查了半天才发现是端口问题。卷映射是Docker部署的重中之重。GitLab把配置存在/etc/gitlab、日志存在/var/log/gitlab、仓库数据存在/var/opt/gitlab如果不做卷映射这些数据全部存在容器内部容器一删数据全没了。映射到宿主机目录以后备份、恢复、升级都有保障。启动后第一次访问通常要等两三分钟因为容器内部要初始化数据库和配置文件。可以用sudo docker logs -f gitlab查看日志看到“GitLab ready”之类的输出就说明服务正常了。首次访问网页会要求设置root初始密码这个密码要妥善保存忘了修改密码的过程会麻烦一些。3.3 版本选择与系统兼容性的避坑建议GitLab的版本更新很快社区版直接用latest标签虽然省事但有个隐患是更新到新的大版本后可能要求宿主机系统或容器运行环境满足更高的条件。GitLab新版本在依赖上也越来越“挑剔”比如官方声明某些高版本只支持较新的Ubuntu LTS版本如Ubuntu 24.04这就意味着如果你的宿主机是旧发行版直接拉最新镜像可能启动失败或功能异常。我的建议是拉取镜像时尽量指定大版本比如gitlab/gitlab-ce:17.x.x-ce而不是用latest。这样升级可控出了问题也知道具体是哪个版本的行为。同时宿主机系统不要用太老的版本Docker环境保持更新能省掉很多莫名其妙的兼容性问题。部署完毕后进入GitLab网页第一件事不是急着建项目而是先把SSH密钥配置好。4. SSH密钥配置与项目上传从生成到免密推送4.1 生成SSH密钥一条命令一个文件对GitLab支持HTTP和SSH两种方式访问仓库。HTTP方式每次推送都要输用户名密码烦且不安全SSH方式只要配置一次密钥后续克隆、推送、拉取全都免密体验完全不一样。这也是为什么每个GitLab教程都会把SSH配置放在前面。打开Git BashWindows或终端macOS/Linux执行ssh-keygen -t ed25519 -C 你的邮箱这里用ed25519算法是当前推荐做法比传统的RSA更快、更安全GitLab也支持它——当然如果你用的是很老的GitLab版本可能只认RSA那就得改用ssh-keygen -t rsa -b 4096。命令执行后会问保存路径默认是~/.ssh/id_ed25519回车即可然后会让你设置passphrase建议留空否则每次推送都要输一遍密码就失去了“免密”的意义。生成的密钥是一对id_ed25519是私钥绝对不要泄露给任何人也不要上传到任何平台id_ed25519.pub是公钥可以安全地告诉任何你需要授权的服务。我用一个生活类比来解释公钥是你家门锁的“钥匙胚”任何人都可以复制分发私钥才是真正能开门的“钥匙”只有你自己有。服务器验证你时是用你的公钥加密一份随机信息只有持有私钥的你才能解开所以私钥必须原件在手。4.2 在GitLab后台添加公钥查看公钥内容cat ~/.ssh/id_ed25519.pub复制输出的整行内容以ssh-ed25519开头登录GitLab网页进入设置右上角头像→SSH密钥粘贴到“密钥”输入框标题自动生成也可以自己改点击“添加密钥”即可。这里有一个常见的坑有人把私钥内容复制上去了。添加时GitLab会报“公钥格式无效”因为私钥以-----BEGIN OPENSSH PRIVATE KEY-----开头一眼就能区分。还有一种情况是复制时多复制了换行或末尾空格也会导致校验失败粘贴后最好肉眼检查一遍开头和结尾是否完整。添加完成后可以用ssh -T gitgitea.example.com换成你的GitLab地址测试连通性。首次连接会提示确认主机指纹输入yes回车即可。如果看到“Welcome to GitLab, 用户名!”的欢迎语说明SSH密钥链路已经全部打通。4.3 新建项目并把本地代码推送到GitLab在GitLab网页左上角点击“新建项目”可以选“创建空白项目”或者“导入项目”。创建空白项目时需要填项目名称、可见级别私有/内部/公开描述可选。建议勾选“使用自述文件初始化仓库”这样项目一开始就有一个默认分支和README文件后续克隆代码时能少一些问题。如果本地还没有代码直接在GitLab项目页面找到“克隆”按钮复制SSH地址然后用git clone gitgitlab.example.com:用户名/项目名.git把远程仓库整个拉到本地之后正常开发即可。如果本地已经有代码想把它变成一个GitLab项目这是热词里“本地idea项目怎么上传gitlab”“本地项目上传到gitlab”的典型场景流程稍长但逻辑清晰# 在项目目录初始化本地仓库 git init # 添加所有文件到暂存区 git add . # 创建第一个提交 git commit -m Initial commit # 关联远程仓库地址替换成你的克隆地址 git remote add origin gitgitlab.example.com:用户名/项目名.git # 推送并设置上游分支 git push -u origin main-u参数的意思是“设置上游”执行一次之后后续的git push和git pull就不需要再带分支名了。第一次推送时如果你在GitLab创建项目时初始化了README本地仓库和远程仓库的历史没有共同祖先会报错提示“refusing to merge unrelated histories”这时可以选一个更省事的办法创建项目时不要勾选“使用自述文件初始化仓库”直接创建空白项目本地推上去后再补README。4.4 免密体验多仓库、多平台的密钥管理如果同时使用GitLab和GitHubSSH密钥可以共用但需要在~/.ssh/config里做区分。简单示例Host gitlab.com HostName gitlab.com User git IdentityFile ~/.ssh/id_ed25519 Host github.com HostName github.com User git IdentityFile ~/.ssh/id_ed25519这样两个平台都会用同一个私钥公钥分别添加到GitLab和GitHub即可。如果一台电脑上有多个身份比如工作用GitLab、个人用GitHub或者一个平台需要多把密钥可以生成多个密钥文件然后在config里按域名指定不同的IdentityFile逻辑清晰互不干扰。5. GitLab日常协作与高频操作拉取、分支、提交修正5.1 克隆与拉取代码同步的两种姿势当你要在一个新环境里开始工作第一件事永远是git clone把远程仓库完整复制到本地——这里包含所有历史记录和所有分支严格说是所有远程分支的引用。克隆完成后默认处于默认分支通常是main或master。日常开发中git pull是同步远程最新代码的标准手段。它的实际行为是“先git fetch把远程最新提交下载到本地但不合并再git merge把远程变更合并进当前分支”。这个组合拳值得记住因为有些时候你只想看看远程有什么改动而不想立刻合并那就手动执行git fetch配合git log origin/main --oneline查看即可。一个常见的疑问是“为什么我拉了代码但本地文件没变化”——很可能是因为你停留在某个旧分支上拉取的是另一个分支的更新。所以操作前务必用git branch确认当前分支别拉错地方。5.2 分支的创建、切换与合并GitLab的协作几乎全部围绕分支展开。规范流程是从主分支切出功能分支 → 在功能分支上开发并提交 → 推送功能分支到GitLab → 发起Merge Request → 代码评审通过后合并回主分支。常用操作# 基于当前分支创建新的功能分支并切换过去 git checkout -b feature/login # 查看本地分支 git branch # 切换到已有分支 git checkout main # 把功能分支合并进当前分支先切到目标分支 git merge feature/login这里要特别提醒一个操作顺序的问题合并前务必确保当前分支是你“想要接收改动”的分支。我见过有人站在feature分支上执行git merge main结果把主分支的代码合进了功能分支方向反了一顿手忙脚乱才回滚。合并前用git status看一眼全局状态总是没错的。合并时如果两个分支改动了同一文件的同一区域会触发冲突。Git会把冲突区域用、、标记出来你需要手动保留正确的版本然后git add该文件并git commit完成合并。处理冲突是个纯手工活没有捷径但可以用git diff先看清楚两边改的是什么再动手。5.3 提交修正revert、reset与amend的取舍开发过程中最常用的修正确实是amend它用来修改最近一次提交的信息或者补充漏掉的文件# 补充文件到最近一次提交不改变提交信息 git add 漏掉的文件 git commit --amend --no-edit # 修改最近一次提交的信息 git commit --amend -m 新的提交信息但--amend有个重要限制它相当于“重写”了最近一次提交会导致该提交的哈希值变化。如果你已经把那次提交推送到远程并且别人也拉取过了amend会造成历史不一致别人再推送时就会冲突。所以我的原则是只对尚未推送的本地提交使用amend推送过的提交想修正用git revert生成一个反向提交更安全。# 回滚某次提交生成一次新的反向提交 git revert 提交哈希revert不会改写历史只是“追加”一次反操作非常适合公共分支上的错误修正。至于git reset --hard这类危险操作我建议只在本地分支上使用而且要确认没有未提交的改动需要保留——--hard会直接丢掉工作区的所有改动无法找回。5.4 GitLab CI/CD的入门概念GitLab自带的CI/CD是它区别于普通代码托管平台的重要能力。简单说你可以在仓库里放一个.gitlab-ci.yml文件定义“代码推送后自动执行哪些任务”比如自动跑测试、自动构建镜像、自动部署到测试服务器。GitLab检测到文件变更后会自动分配一个Runner执行任务的机器按配置运行。初学阶段不建议一上来就做完整流水线先定义一个最简单的“冒烟测试”任务让CI在每次推送后跑一遍测试命令。等熟悉了流程再逐步加入构建、发布等步骤。这里的核心价值是把“人工重复劳动”变成“机器自动执行”减少人为失误也缩短反馈时间。后续在“热词”里看到的gitlab ci相关内容都可以沿着这个基础往上扩展。6. 常见报错与疑难排查把踩过的坑一个个填平6.1 SSH连接失败Permission denied (publickey)这是所有SSH问题里最常见的。现象是推送代码时报Permission denied (publickey)看起来让人头皮发麻但排查思路其实很固定。第一步检查本地密钥是否存在ls ~/.ssh/如果没有id_ed25519文件说明你还没生成过密钥回到前面4.1节补上。第二步检查公钥是否已经添加到GitLab进入GitLab后台的SSH密钥页面确认。第三步用ssh -T git你的GitLab域名测试看具体的错误输出能给出更多线索。还有一个临界情况如果你用了非默认路径的密钥文件——比如为了区分多平台改名为id_ed25519_work——Git默认不会去找它必须在~/.ssh/config里显式指定否则一样提示Permission denied。这个坑我踩过一次排查了一下午才发现是“连锁店拿错了钥匙串”。6.2 HTTP克隆报错Login failed. Check API token or GitLab version如果你选择用HTTP方式克隆或推代码偶尔会碰到类似Login failed. Check API token or GitLab version的提示。这类信息的本质是“身份认证没过”具体原因通常有三种账号密码输入错误开启了双重认证但没走正确的Token认证流程GitLab版本太旧导致某些新认证方式不兼容。先确认用户名和密码准确无误如果你开了双重认证就不能再用账号密码直接操作Git需要在GitLab后台生成Personal Access Token把Token作为密码输入。如果上述都正常还报错检查一下GitLab版本是否太老——老版本的API接口和新的客户端工具兼容性确实会出现问题升级GitLab通常能解决。从经验上说与其在HTTP认证上反复纠缠不如直接切到SSH方式配置一次密钥多年省心。6.3 fatal: not a git repository (or any of the parent directories): .git这个报错字面意思很明确当前目录或任何父目录里都没有.git文件夹Git不知道该拿什么仓库工作。新手最容易在不同的目录里敲git status撞上这个提示。解决思路很简单先确认你确实在项目目录里。如果项目目录已经初始化过仓库应该存在.git文件夹默认隐藏用ls -a查看。如果项目是从远程克隆来的.git一定存在。如果是本地新建的目录需要先执行git init初始化。还有一种情况是你在Git Bash里用pwd看一下当前路径确认是不是自己以为的那个目录——目录切错了的事情真的经常发生。6.4 推送被拒Non-fast-forward 与强制推送的克制! [rejected] main - main (non-fast-forward)是多人协作里非常典型的报错。本质是远程分支有一些你本地没有的提交你直接推送会被拒绝——Git在保护远程历史防止你用旧历史覆盖新提交。标准解法是git pull先拉取远程变更合并或变基后再次推送git pull origin main git push origin main如果冲突不多Git会帮你自动合并有冲突则手动解决。如果你想保持提交历史线性、避免出现多余的“Merge commit”可以把git pull换成git pull --rebase相当于把你的本地提交“垫”到远程最新提交之后历史更干净。需要特别克制的是git push --force或git push -f。强制推送会直接用本地历史覆盖远程历史最直接的后果是“把别人的提交冲掉”。公共分支上绝不建议使用强制推送如果你确实因为amend或rebase需要重新推送并且这是你自己维护的独立分支确保团队成员都知情后再操作否则一旦覆盖可能有人哭都找不到地方。6.5 GitLab打不开、启动失败与容器异常Docker部署的GitLab偶尔会出现在宿主机重启后起不来的情况。先看容器状态sudo docker ps -a如果容器处于Exited状态手动启动sudo docker start gitlab如果启动后服务迟迟不响应看日志sudo docker logs -f --tail50 gitlab。常见的原因是宿主机磁盘满了GitLab数据增长很快或者端口被占用。磁盘问题用df -h排查端口问题用sudo netstat -tlnp | grep 22确认端口占用情况。我自己遇到过的最隐蔽问题是宿主机重启后Docker服务没自动启动容器还处于Exited状态页面打不开。解法是把Docker和容器都设为开机自启sudo systemctl enable docker sudo docker update --restartalways gitlab这样下次即使断电重启服务也能自己恢复不用等同事打电话来求救。6.6 仓库代码量统计与pack文件过大的处理团队管理经常想知道“每个仓库有多少代码量、注释率是多少”。GitLab本身没有直接的“统计按钮”但可以用几种方式一是通过“分析”功能看仓库的提交趋势与贡献者活动二是借助git log做代码量的粗略统计比如查看某段时间的提交数和变更行数三是用第三方工具如gitstats、cloc扫描克隆到本地的仓库代码cloc可以统计多语言代码行数和注释行数操作简单结果直观。另外仓库长期使用后会出现.git目录下有一个很大的pack文件可能几百MB甚至几GB影响克隆和拉取速度。这个pack文件是Git自动打包历史对象的结果本身不是异常但如果膨胀到过大需要优化。可以执行垃圾回收git gc --prunenow --aggressive这个命令会把历史对象重新压缩删除不可达对象一般能显著缩小仓库体积。注意不要在团队正在频繁推送的时候执行最好选在相对空闲的时段。对于超大的历史文件还得考虑用git filter-repo这类工具重写历史彻底移除那是另一个深坑这里先不展开。6.7 GitLab备份与恢复给数据买份保险用Docker部署GitLab备份其实比裸机部署更简单。由于数据和配置都已挂载到宿主机目录最简单的备份方式就是直接备份挂载目录sudo tar -czvf /backup/gitlab_backup.tar.gz /srv/gitlab当然GitLab也提供了官方的备份命令在容器内执行sudo docker exec -t gitlab gitlab-backup create这个命令会把GitLab的数据库和仓库数据打包成备份文件存放在容器内配置的备份目录里默认是/var/opt/gitlab/backups。恢复时执行gitlab-backup restore BACKUP时间戳即可。我的建议是定期备份异地存储双保险。纯靠本机目录备份一旦机器磁盘坏了数据一样难救。把备份文件同步到另一台机器或对象存储里成本极低收益却是“保证团队代码不丢”的底线保障。6.8 GitLab高危漏洞修复别拖代码托管平台一旦存在安全漏洞影响面是“所有项目、所有人”的。GitLab官方会定期发布安全公告说明哪些版本存在高危漏洞以及修复版本。如果团队用的是社区版跟着官网发布信息及时升级镜像即可sudo docker pull gitlab/gitlab-ce:新版本号 sudo docker stop gitlab sudo docker rm gitlab sudo docker run ... # 用同样的参数重新启动升级前务必先做备份——这是所有升级操作的红线没有备份就升级一旦失败可能连回滚的机会都没有。升级后访问页面确认功能正常再通知团队成员继续使用。7. 一个值得养成的协作习惯提交信息的规范与代码评审技术操作说完了最后分享一个偏“软技能”但影响深远的经验提交信息commit message的规范性。团队协作中代码历史就是“项目日志”一条fix bug根本看不出改了什么而一条修复登录接口在用户名为空时抛出500错误的问题让所有人一目了然。我建议团队约定简单的格式类型简短描述例如feat添加用户注册功能、fix修复首页白屏问题、docs更新README。如果项目里引入了代码规范工具还可以在GitLab CI里加一道校验任务检查提交信息是否符合规范不符合就不让合并——工具的强制约束比人的自觉可靠得多。代码评审Code Review同样值得坚持。在GitLab上发起Merge Request后至少让一位同事过目再合并进主分支。这件事表面上是“多花时间”实际上是“提前消灭bug、互相学习写法”的高性价比投资。我自己带过的团队里评审流程执行得越严格的项目线上事故率越低这是有统计学意义的经验不是空话。8. 一些写在最后的个人心得Git安装和GitLab操作说到底是一套“建立信任链条”的过程你信任本地版本管理的可靠性团队信任集中托管平台的稳定性。链条中任何一环出现问题都别急着烦躁按“看报错 → 查日志 → 搜信息 → 问同事”的顺序一步步走90%的问题都能自行解决。根据我个人经验最值得在团队里反复强调的三件事一是SSH密钥务必按规范配置并保管好私钥二是推送前多看一眼当前分支和目标仓库三是对公共分支永远不要轻易使用强制推送。这三条看着简单覆盖了我这些年遇到的大部分事故原因。最后再分享一个小技巧新入职或换电脑后我建议你先做一次“从零到一”的完整演练——装Git、配身份、生成密钥、在GitLab建一个测试项目、把本地代码推上去、再克隆一次全程走通。这一套流程能帮你在真正的项目任务到来前把所有环境问题都暴露掉之后的开发就会顺畅很多。愿你的每一次git push都能顺利落库每一次git pull都不会破坏心情。
返回列表