Git与GitHub新手入门:从环境配置到团队协作的完整实战指南

发布时间:2026/9/17 13:14:21
Git与GitHub新手入门:从环境配置到团队协作的完整实战指南 带新人这件事我是真有点发言权的。前阵子团队进来一个刚毕业的开发电脑上啥都没装连Git和GitHub的关系都说不清更别提什么提交推送。我带着他从零开始把Git装好、连上GitHub、把项目拉到本地、在VSCode里日常更新最后把他加进仓库当协作者。整套流程走完他第二天就能自己提代码了。这篇文章就是把当时带人的过程完整还原一遍适合完全零基础的新人也适合刚换电脑需要重新配环境的老手照着做就能把这套流程跑通。1. 安装Git先把环境搭起来再谈其他1.1 为什么在Windows上我强烈推荐Git for Windows很多人第一次接触Git是在Windows上那第一件事就是装Git。Git本身是Linux世界里出来的工具在Windows上跑需要一个适配版本市面上最主流的就是Git for Windows也就是我们常说的Git Bash套装。我推荐它的原因很直接它自带一个Git Bash终端风格接近Unix命令行几乎所有网上能找到的Git教程命令在Git Bash里都能原样执行。如果你用CMD或者PowerShell经常遇到命令不兼容、路径解析不对、脚本跑不通之类的问题。Git Bash把这些麻烦全挡在外面新手用它最省心。另外Git Bash里还附带了一堆常用的Unix小工具比如ls、cat、grep、ssh-keygen这些后面生成密钥、查看文件都会用到。装一个Git for Windows相当于把Git命令环境、SSH工具、基础命令行工具全备齐了不用再额外折腾。1.2 下载安装与关键选项去Git官网的下载页面选Windows 64-bit版本下载即可。下载速度正常情况下都还可以如果感觉慢就耐心等等安装包也就几十兆。安装过程里有几个选项值得单独说一下因为这些地方新手最容易乱点点错了后面用起来就麻烦。第一个是Select Components默认勾选就行什么Git Desktop Icon、Git Bash Here、Git GUI Here都可以留默认。特别提醒一下里面有个选项叫Add a Git Bash Profile to Windows Terminal如果你用Windows Terminal建议勾上。第二个是Default editor。这个比较关键默认是Vim新手误入Vim界面根本退不出来一屏幕代码被锁住的感觉非常酸爽。建议在这一步选Use Visual Studio Code as Gits default editor前提是你电脑上已经装了VSCode。没装的话建议先装VSCode再回来装Git或者临时选Notepad也行但体验差不少。第三个是Adjusting your PATH默认选中间那一项Git from the command line and also from 3rd-party software。这行的意思是让git命令在CMD、PowerShell、Git Bash里都能直接用。如果你选了第一项Use Git Bash only以后在CMD里敲git会提示找不到命令排查起来很烦。第四个是Line ending conversions默认项就行。这里处理的是Windows和Linux换行符不一致的问题默认的Checkout Windows-style, commit Unix-style line endings适合大多数团队协作场景。后面的几个界面像SSH client、HTTPS backend、symbolic links这些统统默认即可不需要动。1.3 验证安装装完之后打开Git Bash敲一行命令git --version如果输出类似git version 2.40.0.windows.1这样的信息说明安装成功。如果提示命令找不到大概率是PATH那个选项没选对回装一遍确认选的是Git from the command line and also from 3rd-party software。注意安装完Git之后之前已经打开的CMD或PowerShell窗口不会自动识别新的PATH环境变量需要重新开一个窗口才能生效。这个坑很多人踩过检查命令时报错但其实什么都没做错就是没重开终端。2. 配置Git身份与GitHub SSH信任2.1 告诉Git你是谁Git装好之后第一件事不是急着clone项目而是先告诉Git你是谁。这一步不做好你提交代码的时候会报Please tell me who you are因为Git需要在每次提交时记录作者信息没有身份它不干活。打开Git Bash敲下面两行git config --global user.name 你的名字 git config --global user.email 你注册GitHub用的邮箱--global的意思是全局生效配置写入到你用户目录下的.gitconfig文件里这台电脑上所有Git仓库都会用这个身份。如果某个项目想用不同的身份可以去掉--global在具体仓库里单独配置。配置完之后可以用这个命令查看git config --list会看到user.name和user.email就列在里面。这里有个细节要提醒你user.email一定要和你GitHub账号绑定的邮箱一致。GitHub是根据邮箱来关联提交记录的邮箱不一致的话你的提交在GitHub上不会显示在你的贡献列表里头像也没了整个提交看起来像陌生人干的。2.2 为什么我建议用SSH而不是HTTPS连接GitHub有两种方式HTTPS和SSH。HTTPS每次push都要输入用户名和密码虽然Windows凭据管理器会帮你记住一部分但实际使用中经常弹窗、令牌过期体验很一般。SSH用的是密钥对本地生成一把私钥、一把公钥公钥放到GitHub上私钥留在本地。以后每次连接GitHubGit自动用本地私钥签名GitHub用公钥验证全程不需要输密码。配置一次长期免密非常香。团队协作场景下SSH是绝对的主流方案网上绝大多数教程命令也都是按SSH写的。所以虽然配置SSH对新手来说多几步操作但这几步是值得花的。2.3 生成密钥并添加到GitHub在Git Bash里敲ssh-keygen -t ed25519 -C 你注册GitHub用的邮箱解释一下这条命令的参数-t指定密钥算法ed25519是目前推荐的安全性高且长度短的新算法-C是注释通常写上邮箱方便以后一眼认出这把密钥是谁的。敲下回车之后会问你保存路径默认是C:\Users\你的用户名\.ssh\id_ed25519直接回车用默认路径就行。接着会问passphrase这个是给私钥再加一道密码保护对新手来说建议留空直接回车否则以后每次连接都要输一遍徒增麻烦。完成后去查看公钥cat ~/.ssh/id_ed25519.pub屏幕上会输出一串以ssh-ed25519开头、以你邮箱结尾的字符串这就是公钥。从开头一直复制到结尾不要多复制空格也不要漏掉最后的邮箱部分。然后打开GitHub网站登录后点右上角头像进入Settings左侧菜单里找SSH and GPG keys点New SSH key标题随便填个你能认出来的名字比如我的Windows电脑把公钥粘贴到Key输入框里点Add SSH key。验证一下是否配置成功ssh -T gitgithub.com第一次连接会问是否信任这个主机输入yes回车。看到Hi 你的用户名! Youve successfully authenticated, but GitHub does not provide shell access.就说明SSH配置成功了。提醒私钥文件id_ed25519绝对不要发给任何人不要传网盘、不要传聊天工具。公钥可以随便给私钥泄露等于你GitHub账号的门钥匙被复制了。换电脑或者重装系统后需要在新机器上重新生成密钥并添加。3. 把GitHub上的项目同步到本地3.1 选择SSH仓库地址现在Git也装好了身份也配了SSH也通了可以开始拉项目了。打开GitHub上目标仓库的页面点绿色的Code按钮切换到SSH标签页会看到一个类似gitgithub.com:用户名/仓库名.git的地址复制下来。这里有几个细节值得注意。仓库在GitHub上有两种形态private私有仓库和public公开仓库。私有仓库只有你自己和被你授权的人能看公开仓库所有人都能看。性质和选型我不多讲了你自己根据项目情况定。另外注意仓库里最好有README文件和.gitignore文件。README是项目的说明文档clone下来之后你第一眼就知道这项目是干嘛的.gitignore是告诉Git哪些文件不要跟踪后面会专门讲。3.2 执行git clone并验证在Git Bash里切换到一个你想存放项目的目录比如/d/projects对应Windows的D:\projects然后执行git clone gitgithub.com:用户名/仓库名.gitclone的意思是把远程仓库完整复制到本地。这个操作会把整个项目文件、提交历史、分支信息全部一次性拉下来同时在本地自动初始化一个Git仓库并且自动把远程仓库命名为origin。之后所有和GitHub的交互都通过这个origin来完成。clone完成后当前目录下会多出一个和仓库同名的文件夹整个项目就在里面。进入这个文件夹cd 仓库名 git statusgit status用来查看当前工作区状态如果输出On branch main和nothing to commit, working tree clean说明你的本地仓库一切正常和远端同步干净得很。查看远程仓库信息git remote -v会显示origin对应的fetch和push地址就是刚clone时用的那个SSH地址。以后改代码、提交、推送都是围绕这个origin来操作的。3.3 新手必懂的分支概念clone下来之后你会发现自己在一个默认分支上多数仓库是main老项目可能是master。分支这个概念新手很容易懵我打个比方主干是正式发布的版本线分支是在主干旁边拉出来的一条工作线你在分支上随便折腾不会影响主干的稳定性改好了再合并回去。日常开发的基本逻辑就是在分支上干活、提交然后把分支合并回主干。看当前分支用git branch新建并切换到新分支git checkout -b 新分支名切回已有分支git checkout 分支名对新手来说先知道有这个东西、知道它是干嘛的就够了。等你实际遇到要在分支上开发的时候再回头细看这些命令理解会快得多。4. 在VSCode里完成日常更新与提交4.1 VSCode安装与Git集成项目已经拉到本地了接下来日常改代码的地方就是VSCode。VSCode从官网下载安装即可一路默认。装完之后有两个东西建议顺手搞定一是装个中文语言包让界面变成中文对新手友好很多二是确认VSCode的集成终端能正常唤起Git。VSCode本身内置了非常强大的Git支持这也是为什么我推荐拿它来配合Git工作。左侧菜单栏那个分支图标就是源代码管理面板所有文件改动、提交、推送都能在这里面看到和操作不用记命令也能玩转Git。想要更顺手的体验可以装两个插件GitLens和Git Graph。GitLens能在你打开文件时显示每一行是谁在什么时候写的定位问题相当好用Git Graph用图形化方式展示提交历史你一眼就能看到分支合并的轨迹对理解Git工作流帮助特别大。用Ctrl打开VSCode内置终端右下角可以切换shell类型。如果你装了Git for Windows终端里会有一个Git Bash的选项建议默认选它。这样你在VSCode里敲的命令和前面我教的完全一致不会因为PowerShell和bash语法差异遇到奇怪的问题。4.2 日常更新项目的一套标准流程这是整个文章的核心也是你之后每天都要重复做的事。我把它拆成六步每一步都告诉你为什么。第一步拉取最新代码git pull这个命令把远端仓库的最新提交拉到本地。团队协作中别人可能刚推了新代码你不拉就直接改改完之后推送很可能产生冲突。所以正确习惯是开工前先pull一次让本地基于最新版本干活。第二步改代码。这一步没什么好说的就是在编辑器里折腾逻辑、修bug、加功能。第三步查看改动git status这个命令告诉你哪些文件被改了、哪些是新加的、哪些被删了。养成没事就敲一下的习惯你会对仓库状态了如指掌。第四步把改动加入暂存区git add ..的意思是加入所有改动。如果只想提交某个文件就写具体路径git add src/index.js。暂存区这个概念我解释一下Git把你要提交的内容先放在一个中间地带你可以选择性地提交一部分文件而不是一把梭。对新手来说git add .是最直观的等你想精细控制的时候再学其他写法。第五步提交到本地仓库git commit -m 提交说明-m后面跟的是提交说明必须写清楚这次干了什么。好的提交说明长这样fix: 修复登录接口返回空数据的问题、feat: 新增用户头像上传功能。不要写update、改了点东西这种毫无信息量的话不然一个月后回头看提交记录你根本不知道当时改了啥。第六步推送到GitHubgit push这个命令把本地提交推到远端从此远端仓库就有了你的这次改动。push之后别人pull就能看到你的代码。这套流程就是Git日常使用的核心循环pull → 改 → add → commit → push。记住这个循环你已经掌握了95%的日常操作。4.3 使用VSCode图形界面操作Git如果你觉得命令行太抽象VSCode的源代码管理面板可以让你全程鼠标操作效果一样而且直观得多。当你在项目里改了文件左侧源代码管理图标上会出现一个数字角标显示改动文件数。点进去所有改动文件列在更改列表里点击任意文件右侧会打开diff视图左边是改动前的版本右边是改动后的版本增删行一目了然。提交的时候在面板顶部的输入框里写提交说明然后点输入框上面的对勾图标相当于git commit -m。之后再点面板右上角的推送图标完成了。拉取代码点面板标题栏那个循环箭头图标弹出来选择拉取就是git pull。图形界面的好处是你看得见自己的操作对象不容易出错。我的建议是新手先用图形界面建立起改动-提交-推送的心理模型之后再慢慢切到命令行两条路都通。4.4 .gitignore和Windows换行符问题很多仓库根目录下有个.gitignore文件它的作用是告诉Git哪些文件不入库。典型的比如Node.js项目里的node_modules、Python项目里的venv、编译生成的dist目录、IDE的配置文件.vscode/等等。你可能会遇到一种情况明明新建了一个文件但VSCode源代码管理面板里就是不显示。多半是这个文件被.gitignore规则干掉了。去看一眼.gitignore有没有对应的忽略规则。如果确实不需要入库就让它被忽略如果你有必须入库的理由可以修改.gitignore把那个规则删掉。Windows上还有一个绕不过去的坑是换行符。Git for Windows默认开启core.autocrlf本该是LF换行的文件在Windows工作区里会变成CRLF提交时自动转回LF。大多数时候没什么感知但偶尔会遇到脚本文件因为换行符格式不对而执行报错尤其是shell脚本和Python脚本。碰到这种情况一个办法是在项目根目录加一个.gitattributes文件按文件类型强制指定换行符规则。对新手来说遇到再说大多时候默认配置是够用的。5. 把项目组成员添加到GitHub仓库5.1 仓库Collaborators设置流程项目是你从零搭的或者是你建的仓库现在要让别人也进来干活在GitHub上操作很直接。打开仓库页面点顶部的Settings左侧菜单找Collaborators and teams点进去之后点Add people输入对方的GitHub用户名或者注册邮箱选择角色。角色就两种Write和Read。Write可以推代码Read只能拉代码看代码。小团队协作给Write就够了只想让别人围观给Read。点Add之后GitHub会生成一个邀请链接你可以复制发给对方对方打开链接后点接受邀请就正式加入了这个仓库的协作者名单。这里有个细节加入之后对方clone你的项目、往里推代码都会受你仓库权限的约束。如果推不上去检查一下对方的角色是不是Read。如果是Read你需要在Settings里把他的角色改成Write。如果团队规模比较大比如十几个、几十个人用Collaborators挨个加就很不方便了。GitHub提供了Teams的组织协作模式在Organization里建团队、设权限、批量加人权限模型也更细。但那是另一个话题对三五个人小项目来说Collaborators的简单直接完全够用。5.2 新成员加入后的完整协作流程新成员接受邀请之后他的工作流和你从零配置时是一模一样的装Git、配身份、生成SSH公钥、把公钥加到自己的GitHub账号、clone你的项目、改代码、push。多人协作的模型可以简单理解为每个人本地都有一份完整仓库各自在工作区里改代码提交到自己的本地仓库然后推送到远端的GitHub仓库另一个人在push之前先pull把最新的代码拉下来再在自己本地合并最后再推上去。这种分布式模型和网盘同步完全是两回事——即使你不联网也可以本地提交联网之后再把提交推上去。团队协作里最怕的就是闷头开发三天不pull一push全是冲突。所以我的习惯是严格要求自己和新人都做到开工先pull、改完就commit、下班前push。改动小、提交勤、说明清楚这三个习惯养成之后团队协作的摩擦会少很多。5.3 冲突没有想象中可怕多人同时改一个文件迟早会遇到冲突。所谓冲突就是两个人改了同一份代码的同一行Git不知道以谁的为准只能把决定权交给你。遇到冲突时VSCode的源代码管理面板会把状态标识为合并冲突打开冲突文件会看到类似这样的标记 HEAD 这是你的代码 这是对方的代码 分支名 HEAD到之间是你当前分支上的内容到之间是别人分支上的内容。VSCode会直接在编辑器里提供三个快捷选项Accept Current Change保留你的、Accept Incoming Change保留对方的、Accept Both Changes两个都保留。你也可以手动编辑这块区域把两边都融进去。处理完冲突之后保存文件git add这个文件然后commit冲突就解决完了。我的经验是冲突本身不可怕可怕的是平时不沟通、长时间不pull、提交历史乱成一锅粥还硬推。保持频繁同步冲突基本上只会在同一行代码上出现处理起来很快。6. 常见问题与排查技巧实录6.1 高频报错速查表我把实际带人过程中最常遇到的报错整理成了表格你遇到问题先来这里找八成情况能直接解决。报错信息原因分析解决办法Permission denied (publickey)SSH密钥没配好或者公钥没添加到GitHub重新生成密钥把新公钥加到GitHub的SSH keys里最后ssh -T gitgithub.com验证fatal: unable to access https://...远程仓库地址用的HTTPS或者URL拼错了用git remote -v查看当前远程地址确认SSH地址格式是否正确必要时git remote set-url修改fatal: remote origin already exists本地仓库已经关联过一个origin先用git remote remove origin移除旧关联再git remote add origin 新地址Please tell me who you are没有配置user.name和user.email执行git config --global user.name/user.email配置完就好fatal: refusing to merge unrelated histories两个仓库没有共同的历史提交强行合并被拒绝确认确实要合并时pull/merge加上--allow-unrelated-histories参数但一般不建议这么做LF will be replaced by CRLFWindows换行符自动转换的提示大多数情况无害如果项目有统一换行符配置用.gitattributes强制fatal: Authentication failed密码或令牌错误确认用户名和令牌正确GitHub现在不支持密码操作必须用token或个人访问令牌6.2 我在实际项目里踩过的坑第一个坑是把公钥粘贴到GitHub时不小心把换行符或者多余空格也粘进去了。看起来是粘对了但验证连接就是不通过报的就是Permission denied。排查半天才发现是复制的时候多带了一个回车。处理办法是粘贴完认真检查开头是ssh-ed25519结尾是你的邮箱中间没有任何换行。第二个坑是VSCode源代码管理面板不显示改动但文件明明改了。后来发现是打开文件夹的方式不对——用文件→打开文件夹打开的是项目根目录Git识别正常但如果单独打开了某个子目录Git看不到上一级的.git目录自然什么都不显示。打开VSCode的时候一定要打开包含.git那个文件夹的仓库根目录。第三个坑是有人把一百多MB的打包文件直接推到了仓库里。第一次push花了很久不说之后每个人clone仓库都要把这堆大文件拉一遍整个仓库体积膨胀得厉害操作越来越卡。解决办法是用Git LFS管理大文件或者干脆不要把编译产物、打包文件放进Git仓库让CI去构建本地用.gitignore过滤掉。第四个坑是分不清默认分支名。有的仓库默认分支是main有的老仓库是master新人在本地新建了master分支一通操作之后发现和远端的main分支各走各的路混乱得很。每次操作之前先git branch -a看所有分支搞清楚自己在哪操作起来就清爽了。从最初的一脸懵到现在能独立完成pull、commit、push的循环这个过程其实没有多难难的是把几个概念串起来Git是本地版本控制工具GitHub是远程托管平台SSH是免密安全通道VSCode是编辑器加Git图形操作面板。如果你现在要把这套流程再走一遍记住常规动作口诀开工先pull改动小步提交push前看status冲突别慌、读提示。这几句话是我自己这几年踩坑踩出来的行为准则照着做你的Git使用体验会顺很多。