Git与GitHub完整工作流指南:从零到一实现代码上传与版本控制
1. 项目概述为什么我们需要一套完整的Git工作流如果你刚开始接触编程或者从学校、培训班刚出来准备做自己的第一个项目大概率会听到别人说“把代码传到GitHub上”。然后你可能会去搜教程结果发现教程A讲怎么注册GitHub教程B讲怎么在电脑上装Git教程C又讲怎么用VS Code点按钮上传。每个教程都只讲了一部分中间缺了关键的“连接”步骤导致你跟着做还是报错最后可能干脆放弃直接把代码文件夹用微信发给了同事。这正是我写这篇东西的原因。这不是三个孤立的教程而是一套从零到一、环环相扣的完整工作流。我会假设你是一个全新的开发者手头有一个写好的项目文件夹比如一个网页、一个Python脚本你的目标就是把它安全、规范地放到GitHub上并且以后能轻松地更新它。这个过程涉及三个核心环节远程仓库GitHub、版本控制工具Git和本地编辑器VS Code。理解它们各自扮演的角色以及如何协作比你死记硬背命令更重要。简单来说你可以把GitHub想象成云盘比如百度网盘专门用来存代码和它的历史版本。Git则是你电脑上的一个“智能文件管家”它负责记录你本地代码的每一次改动并帮你和云盘同步。而VS Code是你写代码的“书房”它提供了图形化界面来操作Git这个管家让你不用记太多命令。我们的目标就是让这三者顺畅地联通起来。2. 环境与工具准备打好地基在开始任何操作之前我们需要把工具装好、账号注册好。这个阶段看似简单但很多问题都源于这里没配置对。2.1 GitHub账号注册与初步设置首先访问 GitHub 官网。注册过程和其他网站类似需要邮箱、用户名和密码。这里有三个关键点需要注意用户名Username的选择这将是你个人主页的地址如https://github.com/你的用户名也会是你未来所有项目仓库地址的一部分。建议选择一个专业、易记且不与他人重复的名字最好能和你常用的ID保持一致。验证邮箱注册后务必完成邮箱验证这是后续很多操作如创建仓库、接收通知的前提。初步了解界面注册登录后花两分钟看看主页。最重要的两个按钮是左上角的GitHub Logo点击返回主页和右上角的“”号用于创建新仓库、新组织等。找到你的头像点击可以进入“Your profile”你的个人资料和“Your repositories”你的仓库。注意由于网络环境差异访问GitHub时可能会遇到加载慢或连接不稳定的情况。这是正常现象请保持耐心或尝试在网络状况较好的时段进行操作。绝对不要寻求任何非法的网络代理工具遵守当地的互联网使用规范。2.2 Git的安装与基础身份配置Git是核心工具我们需要把它安装到你的电脑上。Windows用户前往 Git 官网下载安装程序。安装时在“Select Components”界面强烈建议勾选“Git Bash Here”和“Git GUI Here”这会在右键菜单增加快捷入口。在“Choosing the default editor”步骤如果你不确定就选“Use Visual Studio Code as Git‘s default editor”。其他步骤一路默认即可。macOS用户最简单的方法是打开“终端”Terminal输入命令xcode-select --install安装命令行工具其中就包含了Git。或者通过Homebrew包管理器安装brew install git。Linux用户通过包管理器安装例如Ubuntu/Debian系sudo apt-get install git。安装完成后我们需要进行最重要的全局配置告诉Git你是谁。打开命令行Windows用Git Bash或CMDmacOS/Linux用终端执行以下两行命令git config --global user.name 你的GitHub用户名 git config --global user.email 你注册GitHub的邮箱这两行命令的作用是设置提交代码时的“作者”信息。--global参数表示这是全局配置对这台电脑上所有的Git仓库生效。每次你提交代码这个信息都会像签名一样被记录在历史中。务必确保邮箱和GitHub账号的验证邮箱一致这样你的提交才能和GitHub账号关联起来在贡献图上显示。2.3 Visual Studio Code的安装与Git集成VS Code是一个强大的免费编辑器对Git的支持非常友好。从VS Code官网下载安装即可。安装后我们主要做两件事打开内置终端点击顶部菜单栏的“查看” - “终端”或使用快捷键Ctrl反引号键。这个终端会直接在你项目文件夹下打开方便执行Git命令。认识源代码管理视图点击左侧活动栏的源代码管理图标分支形状或者按CtrlShiftG。这个面板是VS Code操作Git的图形化核心你本地文件的改动、提交历史、分支管理都可以在这里完成。确保VS Code能识别到你安装的Git。通常它会自动检测。你可以按F1打开命令面板输入Select Git Executable确认它指向的是你安装的Git路径。3. 核心流程拆解一次完整的代码上传之旅现在假设你的桌面上有一个名为my-first-project的文件夹里面是你写的HTML、CSS、JS文件。我们要把它推送到GitHub。3.1 第一步在GitHub上创建远程仓库远程仓库是代码在云端的“家”。我们需要先在GitHub上把这个家建好。点击GitHub页面右上角的“”号选择“New repository”。Repository name输入仓库名如my-first-project。尽量和本地文件夹名一致避免混淆。Description写一句简单的描述可选。Public/Private选择公开所有人可见或私有仅自己或指定协作者可见。学习阶段选Public即可。Initialize this repository with这里非常关键务必不要勾选“Add a README file”、“Add .gitignore”或“Choose a license”。我们要推送一个已有的本地项目如果勾选了这些GitHub会创建一个带有初始提交的新仓库这会导致后续推送冲突。我们要的是一个完全空的仓库。点击“Create repository”按钮。创建成功后你会看到一个快速设置页面其中显示着仓库的URL格式如https://github.com/你的用户名/my-first-project.git。这个URL就是你的远程仓库地址记下来下一步要用。3.2 第二步在本地初始化Git仓库并关联远程现在回到你的本地项目文件夹my-first-project。用VS Code打开这个文件夹文件 - 打开文件夹。打开VS Code的内置终端Ctrl。确保终端路径就在你的项目根目录下。在终端中输入以下命令将当前目录初始化为一个Git仓库git init这个命令会创建一个隐藏的.git文件夹里面存储了Git所有的版本管理数据。你可以通过ls -lamacOS/Linux或dir /aWindows命令查看。将本地仓库与刚刚在GitHub上创建的远程仓库关联起来git remote add origin https://github.com/你的用户名/my-first-project.git这里的origin是一个别名它代表了你刚刚添加的那个远程仓库地址。你可以给它起其他名字但origin是约定俗成的默认名。3.3 第三步进行首次提交在推送之前我们需要把本地的文件做一个“快照”这个快照在Git里称为“提交”Commit。添加文件到暂存区在终端中输入git add .这个命令中的.表示“当前目录下的所有新增和修改的文件”。它会把你项目里所有变动新文件、修改过的文件放入一个叫做“暂存区”Staging Area的地方。暂存区可以理解为一个准备打包的行李托盘。实操心得git add .很方便但有时会不小心加入一些不需要版本控制的文件比如node_modules、系统缓存文件等。更稳妥的做法是使用git add 文件名来逐个添加重要文件或者先创建一个.gitignore文件来排除这些无关文件。对于新手第一次提交用git add .问题不大但这是你接下来要学习的重要概念。创建提交将暂存区的内容打包成一个永久的快照并附上说明信息git commit -m Initial commit: add project structure-m后面引号里的内容是本次提交的说明务必认真填写。好的提交信息应该简洁明了地描述这次提交做了什么例如“修复登录按钮点击无效的bug”、“新增用户个人主页模块”。模糊的“更新代码”或“又一次提交”是坏习惯。3.4 第四步推送到远程仓库现在本地打包好的“行李”提交可以送上“飞机”推送到远程仓库了。在终端中输入git push -u origin main让我们拆解这个命令git push推送命令。-u这是--set-upstream的简写。它表示将本地的main分支与远程的origin/main分支关联起来并记住这个对应关系。下次你在这个分支上直接输入git push即可无需再指定origin main。origin我们之前设置的远程仓库别名。main你要推送的本地分支名。Git的默认主分支以前叫master现在主流社区已改为main。如果你的本地分支名是master则将命令中的main替换为master。执行命令后可能会弹出一个窗口让你登录GitHub账户进行认证。按照提示操作即可。成功后终端会显示推送进度和提示。刷新你的GitHub仓库页面你会看到所有代码文件都已经安然无恙地出现在了网页上。至此一次完整的代码上传就成功了。4. 使用VS Code图形化界面简化操作虽然命令行是根本但VS Code的图形界面能极大提升日常效率。我们重复上面的“提交并推送”流程这次完全用VS Code完成。修改文件在你的项目里修改或创建一个新文件比如在index.html里加一行注释。查看变动点击左侧的“源代码管理”图标。你会看到“更改”列表下出现了你刚改动的文件。点击文件名可以直观地对比修改前绿色和修改后红色的内容差异。暂存更改将鼠标悬停在更改的文件上点击出现的“”号或者点击“更改”列表上方的“暂存所有更改”。这相当于执行了git add .。提交在上方的输入框里填写提交信息例如“Update index.html with a comment”然后按CtrlEnterWindows/Linux或CmdEntermacOS提交。这相当于执行了git commit -m “...”。推送提交后注意界面左下角的状态栏。你会看到一个类似“↑1”的同步图标数字代表本地比远程超前的提交数。点击这个图标或者点击“源代码管理”视图顶部的“...”菜单选择“推送”即可完成git push。整个过程无需输入任何命令非常直观。图形化操作适合日常小修改的提交而复杂的操作如解决冲突、重置历史可能仍需借助命令行。5. 日常协作与进阶操作指南上传代码不是一劳永逸的更多是日常的更新和维护。5.1 如何更新远程已存在的项目当你换了一台电脑或者想获取项目的最新版本时你需要“拉取”远程代码git pull origin main这个命令是git fetch获取远程更新和git merge合并到本地的合并操作。它会将远程origin仓库的main分支最新内容拉取下来并合并到你本地的main分支。5.2 如何克隆一个已有的项目如果你想参与别人的项目或者把GitHub上的开源项目拿到本地学习你需要“克隆”git clone https://github.com/用户名/仓库名.git这个命令会在当前目录下创建一个与仓库同名的文件夹并将远程仓库的所有代码、历史记录完整地下载下来同时自动帮你设置好远程地址origin。5.3 分支管理并行开发的利器分支是Git最强大的功能之一。你可以把主分支main想象成稳定的生产线而新功能开发应该在新的“实验生产线”特性分支上进行。创建并切换新分支git checkout -b feature-new-header这行命令创建了一个名为feature-new-header的新分支并立即切换过去。你在这个分支上的所有修改都不会影响main分支。在新分支上开发、提交像往常一样修改文件add,commit。合并分支当功能完成后切换回main分支然后合并git checkout main git merge feature-new-header推送分支如果你想将本地分支推送到远程备份或协作git push -u origin feature-new-header在GitHub上就会看到这个新分支并可以发起Pull RequestPR请求合并到main。在VS Code中你可以通过左下角的分支状态栏显示当前分支名点击来轻松切换、创建分支图形化操作非常方便。6. 常见问题与排查技巧实录即使按照步骤操作新手也难免会遇到问题。这里记录了几个最高频的“坑”及其解决方案。6.1 错误failed to push some refs to ...或non-fast-forward问题描述在git push时提示推送失败通常是因为远程仓库有你本地没有的新提交比如你在网页上直接改了README文件。原因分析Git为了防止覆盖别人的工作不允许你直接推送可能导致历史冲突的更新。你的本地历史落后于远程历史。解决方案首先拉取远程的最新更改并合并到本地git pull origin main如果git pull后自动合并产生冲突Git会提示你。你需要手动打开冲突文件解决冲突文件里会有,,这样的标记你需要决定保留哪部分代码或如何整合。解决所有冲突后将文件重新添加并提交git add . git commit -m Merge remote changes and resolve conflicts再次推送git push origin main6.2 错误support for password authentication was removed问题描述推送或克隆时要求输入密码但输入正确密码后仍认证失败。原因分析GitHub已于2021年8月移除了对账户密码的认证支持改为要求使用个人访问令牌Personal Access Token, PAT或SSH密钥。解决方案推荐使用PAT登录GitHub点击头像 - Settings - Developer settings - Personal access tokens - Tokens (classic)。点击“Generate new token”选择“Generate new token (classic)”。填写Note描述如“my-laptop”选择过期时间Expiration。在Select scopes下至少勾选“repo”权限这代表完全控制仓库。点击“Generate token”。重要这个令牌只会显示一次请立即复制并妥善保存。下次命令行要求输入密码时将密码替换成这个令牌粘贴进去。对于HTTPS克隆的仓库你也可以将远程地址改为包含令牌的形式https://你的令牌github.com/用户名/仓库名.git。6.3 状态混乱如何撤销本地更改或提交撤销尚未暂存的修改还没git add如果你想放弃对某个文件的所有修改还原到上次提交的状态git checkout -- 文件名撤销已暂存的修改已经git add了但还没git commit将文件从暂存区撤出但保留工作区的修改git reset HEAD 文件名然后你可以再用git checkout -- 文件名放弃修改。撤销最近一次提交已经git commit了创建一个新的提交来反转上一次提交的更改历史记录会保留git revert HEAD如果你想彻底删除最近一次提交谨慎使用特别是已推送的提交git reset --hard HEAD~16.4 实操心得.gitignore文件是你的好朋友在项目根目录创建一个名为.gitignore的文件在里面列出你不想被Git跟踪的文件和文件夹模式。例如一个Node.js项目的.gitignore可能包含node_modules/ npm-debug.log .DS_Store .vscode/ *.log这样当你执行git add .时这些文件就会被自动忽略保持仓库的整洁。很多开源项目模板都提供了针对不同语言的.gitignore文件可以直接参考使用。7. 从上传到协作理解Pull Request工作流当你不仅仅是自己上传代码而是想为别人的开源项目做贡献时就需要理解Pull RequestPR工作流。这是GitHub协作的核心。Fork派生在目标项目页面点击右上角的“Fork”按钮这会在你的账号下创建一个该项目的完整副本。克隆你的Fork将你账号下的这个副本克隆到本地。git clone https://github.com/你的用户名/项目名.git创建特性分支并修改和之前一样不要在main分支上直接改。git checkout -b fix-typo进行修改、提交并推送到你的Forkgit add . git commit -m Fix a typo in README git push -u origin fix-typo发起Pull Request推送后在你的Fork仓库页面GitHub通常会提示你“Compare pull request”。点击它选择将你的fix-typo分支合并到原始项目的main分支。填写清晰的标题和描述说明你的修改内容和原因。等待维护者审核项目维护者会审查你的代码可能会提出修改意见。你可以在本地继续修改、提交并推送到同一个分支PR会自动更新。合并审核通过后维护者会将你的PR合并到原项目中。你的贡献就完成了。这套流程规范了多人协作保证了主分支代码的质量。即使只是修复一个错别字通过PR来提交也是一个非常好的习惯它留下了清晰的贡献记录。掌握从本地到GitHub的完整上传流程只是现代开发者协作的第一步。真正的效率来自于将这套流程内化为肌肉记忆并在此基础上熟练运用分支策略、.gitignore管理、以及PR协作。我个人的体会是初期多花时间在命令行上理解每个步骤的含义比单纯点击图形按钮要扎实得多。当基础概念牢固后再借助VS Code等工具的图形化功能提升日常效率你会发现自己对代码版本的控制能力有了质的飞跃。最后一个小技巧每次提交前多用git status命令看看当前状态它能帮你理清思路避免误操作。

相关新闻

怎么让pycharm在修改后的文件显示圆点,保存以后圆点才消失

怎么让pycharm在修改后的文件显示圆点,保存以后圆点才消失

效果如下:如果没有保存修改后的文件,就会显示圆点。只有点击保存以后才不会显示。具体设置操作:(1)点击文件 ——>设置(setting)——>编辑器 ——>编辑器标签页——> 勾选标记已修改…

2026/9/28 18:47:27 阅读更多 →
医类院校产教融合智慧实训系统解决方案解读 —— 宝华视联实训平台架构分析

医类院校产教融合智慧实训系统解决方案解读 —— 宝华视联实训平台架构分析

随着国家职业教育改革持续深化,“产教融合、岗课赛证融通” 已成为医护类专业人才培养的核心方向。医学护理实训不同于普通工科实训,对画面色彩精度、操作细节录制、多路信号同步、低延迟双向互动有着极高的专业要求。传统卫校、医类高职实训模式长期存在…

2026/10/13 4:50:19 阅读更多 →
如何快速接入 base64Captcha:一个 Go 验证码库的完整实战指南

如何快速接入 base64Captcha:一个 Go 验证码库的完整实战指南

如何快速接入 base64Captcha:一个 Go 验证码库的完整实战指南 【免费下载链接】base64Captcha captcha of base64 image string 项目地址: https://gitcode.com/gh_mirrors/ba/base64Captcha 如果你的 Web 应用需要防止机器人刷接口,第一反应可能…

2026/10/4 10:56:31 阅读更多 →

最新新闻

Windows平台Rust开发环境配置与优化指南

Windows平台Rust开发环境配置与优化指南

1. Rust语言与Windows环境适配背景Rust作为一门系统级编程语言,其编译器工具链对操作系统底层有着深度依赖。在Windows平台进行Rust开发需要特别注意环境配置的差异性——与Linux/macOS不同,Windows存在MSVC和GNU两种ABI(应用程序二进制接口&…

2026/10/14 2:25:24 阅读更多 →
长波红外超构透镜偏振复用FDTD仿真全流程解析

长波红外超构透镜偏振复用FDTD仿真全流程解析

1. 项目背景与核心价值长波红外超构透镜偏振复用聚焦技术是近年来光学领域的前沿研究方向。作为一名光学工程师,我在实际项目中发现传统红外光学系统存在体积大、重量沉、功能单一等问题。而基于超构表面的偏振复用透镜,能在单层平面上实现多通道光学功能…

2026/10/14 2:25:24 阅读更多 →
2026 查重率和 AIGC 率都飘红?一站式降AI率软件实测推荐

2026 查重率和 AIGC 率都飘红?一站式降AI率软件实测推荐

一、前言:2026 高校论文审核新难题随着高校学术审核体系不断升级,知网、维普等主流检测平台全面上线AIGC 智能检测功能,当代毕业生的论文写作与修改迎来双重考验。以往论文仅需攻克重复率超标问题,如今还要规避AI写作痕迹检测风险…

2026/10/14 2:25:24 阅读更多 →
摄影工作室AI提效手册:婚纱写真儿童摄影的修图、营销与交付(v1.0)

摄影工作室AI提效手册:婚纱写真儿童摄影的修图、营销与交付(v1.0)

摄影工作室AI提效手册:婚纱、写真、儿童摄影的修图营销与交付版本 v1.0  2026年10月写在前面:这本手册解决什么这本手册写给三类人:开婚纱影楼的老板与修图主管、拍个人写真和家庭照的独立摄影师、做儿童摄影工作室的店长与后期。你大概率已…

2026/10/14 2:25:24 阅读更多 →
流水线设计实战:从冒险机制到乱序执行的性能优化

流水线设计实战:从冒险机制到乱序执行的性能优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 2:25:24 阅读更多 →
【数据可视化-155】第十五届全运会乒乓球男单半决赛:樊振东VS王楚钦技术分析报告

【数据可视化-155】第十五届全运会乒乓球男单半决赛:樊振东VS王楚钦技术分析报告

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个…

2026/10/14 2:24:24 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →