📚前言
官方文档: GitHub 入门文档 - GitHub 文档
关于国内访问github访问的速度问题,请参考:加速github访问速度方法:Watt Toolkit
**第五章·第二部分:**Github 基础同步命令(git命令方式)
📖1. GitHub简介
GitHub 就像是"代码的社交网络":
- ✅ 代码托管 :免费存储您的代码
- ✅ 版本控制 :基于Git的在线版本管理
- ✅ 协作平台 :多人共同开发项目
- ✅ 开源社区 :全球最大的开源代码库
**✍️提示:**链接github的工具以及身份认证方式,见上一章节。
使用 GitHub ,首先需要 GitHub 帐户和仓库。以下使用git命令方式链接github。
🚀 2. GitHub账号注册与配置
步骤1:注册GitHub账号
-
访问GitHub官网
- 网址:https://github.com/
- 点击"Sign up"按钮
-
填写注册信息
- 邮箱地址:使用常用邮箱(建议Gmail/Outlook)
- 密码:强度高的密码(大小写+数字+符号)
- 用户名 :重要!以后一直要用到,也是主页名称
- 建议规则:
- 使用英文+数字组合
- 与您的技术方向相关
- 例如:android-dev-zhang、java-coder-li
- 建议规则:
-
验证邮箱
- 检查邮箱收件箱
- 点击验证链接完成注册
-
首次登录
- 会提示,填写相关使用信息
- 提示选择 GitHub Free 或 GitHub Pro 来访问您的个人帐户的不同功能。
-
查看主页(可选)

✍️备注:顶部导航栏功能
模块名称 功能与背景 Overview 个人主页概览,展示个人简介、仓库统计、活跃度等核心信息,是他人了解你的 "门面"。 Repositories 管理个人仓库(图中有 3 个仓库),简称Repo,如果我们想要建立项目,就得先建立仓库;有多个项目,就建立多个仓库。。 Projects 管理项目看板,用于规划和跟踪任务(如功能开发、问题修复的进度),适合团队协作或复杂项目管理。 Packages 管理发布的软件包(如 npm 包、Docker 镜像),方便他人通过包管理器复用你的代码组件。 Stars 展示你收藏的仓库(共 18 个),收藏行为可帮助你快速找到感兴趣的开源项目,也体现你的技术关注领域。
步骤2:完善个人资料
-
设置头像
- 点击右上角头像 → "Settings"
- "Profile" → 上传专业头像
🔑 3.身份验证
3.1 常用身份验证选择
进行仓库相关同步更新等,需要相应权限,常用的有PAT、SSH ,经测试 2FA也可以,三种权限可以单独使用,没有相关联系。
PAT、SSH 与 2FA 的区别:
| 项目 | PAT(个人访问令牌) | SSH 密钥认证 | 2FA(双因素认证) |
|---|---|---|---|
| 用途 | 替代密码的 Git/API 认证 | 用于 Git 的机器身份验证 | 保护 GitHub 账户登录 |
| 作用范围 | Git push/pull(HTTPS) GitHub API | Git push/pull(SSH) | 登录 github.com、GitHub Apps 等 |
| 是否用于 Git 命令 | ✔ 是 | ✔ 是 | ✘ 否 |
| 是否用于 GitHub 登录网页 | ✘ 否 | ✘ 否 | ✔ 是(密码 + 2FA) |
| 安全等级 | 高 | 最高 | 最高(保护账户) |
| 最适合的场景 | CI/CD、脚本、HTTPS | 本地开发、服务器、长期设备 | 所有人(账号保护) |
| 是否可单独使用 | ✔ | ✔ | ✔(但仅保护登录) |
| 是否互相依赖 | ❌ 不依赖 | ❌ 不依赖 | ❌ 不依赖 |
| 关系 | 与 SSH 并列的 Git 认证方式 | 与 PAT 并列的 Git 认证方式 | 与 Git 无关(账号层保护) |
- 一句话总结:
- PAT = Git 操作/脚本的"替代密码"
- SSH = Git 操作的"最安全密钥对"
- 2FA = 登录你 GitHub 账户的"第二重保护"
🔍 详细比较
1). PAT(Personal Access Token)
🔥 用于:
-
HTTPS Git 操作(clone/push/pull)
-
GitHub API
-
自动化(CI/CD、脚本)
⭐ 优点:
-
使用简单
-
权限可控(只读/read-only、repo、workflow...)
-
可随时撤销
❗ 缺点:
-
明文存储风险(必须用环境变量或密码管理器)
-
一旦泄漏,就相当于泄漏权限
2). SSH Key 认证
🔥 用于:
- 使用 SSH 协议访问 GitHub(推荐用于开发者)
⭐ 优点:
-
安全性最高(基于公钥加密)
-
使用过程中无需输入密码或 Token
-
一台设备一个私钥,安全控制更好
❗ 缺点:
-
初次配置需要生成密钥
-
多设备需多 Key
3). 2FA(双因素认证)
🔥 用于:
-
登录 GitHub 网站(账号安全层)
-
登录 GitHub CLI(gh auth login)
-
高风险操作(删除 PAT、删除 SSH key 等)
⭐ 优点:
-
防止账户被盗,即使密码泄漏也安全
-
GitHub 自 2023 年起对"代码贡献者"逐步强制
❗ 限制:
-
不参与 Git push/pull
-
启用后,Git 操作不能再使用 GitHub 密码(必须用 PAT 或 SSH)
💡说明:经实际测试,三种权限都可以用于Git操作,本节先介绍2FA,这个是GitHub 强烈建议启用的,但传统上使用FAT或SSH进行进行git操作比较多,如果你想直接使用FAT或SSH,也可以不配置2FA,直接参考下一章的内容。
3.2 🔐双重身份验证介绍
GitHub 强烈建议启用双重身份验证(Two-Factor Authentication,2FA), 如果你是 "eligible group" 中的人,会收到通知、必须在规定期限内启用(自 2023 年 3 月起实施)。如果你不是,则可以暂不启用。
GitHub 支持三种2FA验证方式,初学者优先选「Authenticator app」(认证器 App):
-
「Authenticator app」 :用手机 App 生成验证码(推荐,简单易用,不需要网络);
-
有很多种 App 生成验证码工具,如:
-
Google Authenticator
-
Authy
-
Microsoft Authenticator(👈本教程选用这个)
-
1Password / Bitwarden 自带验证器
-
-
-
「SMS」:通过短信接收验证码(需绑定手机号,依赖手机信号);
-
「Security keys」 :硬件密钥(如 YubiKey,适合高级用户)
- 也有很多种,如:
-
YubiKey
-
Feitian Key
-
指纹 USB Key
-
- 也有很多种,如:
⚙️GitHub配置2FA
- 点击右上角头像 → "Settings"
- 左侧菜单选择"Password and authentication"
- 点击按钮"Enable two-factor authentication"

- 输入密码,进入界面
- 手机应用,下载微软Authenticator,
- 打开「Authenticator app」,按如下操作
- 扫描页面二维码后,会显示github账号信息及验证码。
- 把验证码回填到页面Verify the code from the app中,点击"download",保存「恢复码」,后完成 2FA 启用。

- 提示成功界面
⚠️注意: 恢复码是你在丢失认证设备(如手机、安全密钥)时 ,用于完成 2FA 认证的 "备用第二因素"。如果丢失设备且未保存恢复码,你将无法访问自己的 GitHub 账号,因此它的安全性至关重要。
- 后续操作,涉及安全性高的,会提示输入临时验证码,类似下面界面,打开Authenticator,进入GitHub项目,输入其中的临时码即可:

🆕 4 创建第一个GitHub仓库
方式一:在GitHub网站创建
-
登录GitHub
- 点击右上角"+"号 → "New repository"

- 点击右上角"+"号 → "New repository"
-
填写仓库信息

- 通用信息
- Owner(所有者):默认当前账号,用来决定仓库归属。
- Repository name(仓库名):需填写简短易记的名称(如示例TestApp),这是仓库的核心标识。
- Description(描述):选填项,可简要说明仓库用途,帮助他人或自己理解仓库定位。
配置信息(Configuration)
- Choose visibility(可见性) :默认
Public(公开,所有人可访问,免费),可切换为Private(私有,仅授权用户可访问,收费),需根据项目私密性选择。 - Add README :README 是仓库的 "说明书",建议开启(切换为
On),用于详细介绍项目功能、安装、使用方法等。 - Add .gitignore:.gitignore 文件用于指定 Git 忽略跟踪的文件(如编译产物、依赖目录),可根据项目语言(如 Python、Java)选择对应模板,避免提交冗余文件。如果是Android项目,则选择Android。
- Add license :许可证决定他人如何使用你的代码(如 MIT 许可证允许自由使用但需保留版权声明),开源项目建议选择合适的许可证,私有项目可保持
No license。 ✍️备注:各种许可说明,见附录
- 通用信息
-
创建完成
- 点击"Create repository"
- 记下仓库地址:https://github.com/您的用户名/**仓库名**
-
查看仓库
- 点击右上角头像 → repositories
- 查看自己已有的所有仓库
- 打开相应仓库,可以看到对应的结构

- 点击右上角头像 → repositories
✍️ 备注:仓库页面顶部导航栏功能:
模块名称 功能与背景 Code 仓库核心区域,展示代码文件、分支、提交记录,是查看和下载代码的入口。 Issues 管理项目问题(如 bug 报告、功能需求),用于团队协作时的任务追踪和讨论。 Pull requests 管理代码合并请求,团队成员提交代码后需通过此模块发起 PR,经审查后合并到主分支。 Actions 配置 GitHub 自动化工作流(如代码测试、构建、部署),实现 CI/CD 流程自动化。 Projects 关联仓库的项目看板,用于规划任务进度,适合复杂项目的多阶段管理。 Wiki 维护项目文档,可编写使用说明、技术架构等内容,方便用户和团队查阅。 Security 扫描代码安全漏洞,提供依赖项安全更新建议,保障仓库代码的安全性。 Insights 分析仓库数据(如代码提交趋势、贡献者活跃度),助力项目管理和决策。 Settings 配置仓库权限、可见性、集成等底层设置,是仓库管理的 "控制面板"。
- 互动功能:Pin(固定仓库到个人主页)、Watch(关注仓库动态)、Fork(复制仓库到自己账号)、Star(收藏仓库),这些功能用于社区互动和个人代码管理。
5. 克隆github仓库到本地
将仓库从 GitHub.com 克隆到本地计算机,以便更轻松地修复合并冲突、添加或删除文件以及推送更大的提交。克隆存储库会拉取 GitHub.com 在该时间点拥有的所有存储库数据的完整副本,包括项目的每个文件和文件夹的所有版本。
-
在 GitHub 上,导航到存储库的主页。
-
在文件列表上方,单击code.

-
复制存储库的 URL。
-
要使用 HTTPS 克隆存储库,请在"HTTPS"下单击 。
-
✍️备注:其他方式
-
SSH方式需要使用 SSH 密钥(包括组织的 SSH 证书颁发机构颁发的证书)
-
GitHub CLI,要使用 GitHub CLI 克隆存储库

-
-
-
打开Git Bash。
-
将当前工作目录更改为要克隆目录的位置。
-
键入 ,然后粘贴您之前复制的 URL。
git clone命令格式如下:`git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY ` -
按 Enter 键创建本地克隆。
-
实际执行界面参考:

-
以clone的物理文件如下图

6.本地仓库修改更新后,上传到github
按照以下步骤操作即可将本地修改和新增的文件同步到 GitHub 仓库:
步骤 1:本地修改与添加文件
git bash/CMD,通过CD命令进入当前仓库目录,即包含.git的目录

查看当前目录下的文件
# 查看所有文件(包括.git目录)
ls -la
实际执行界面参考:

步骤 2:提交本地修改到本地仓库
bash
# 查看文件状态(确认修改和新增的文件)
git status
# 将修改和新增的文件添加到暂存区
git add . # 或指定具体文件,如 git add new-file.txt
# 提交到本地仓库,填写清晰的提交信息
git commit -m "feat: 添加新文件并修改xxx功能"
实际执行界面参考:

步骤 3:推送到 GitHub 远程仓库
bash
# 将本地提交推送到 GitHub 仓库(默认远程仓库别名为 origin,分支为 main 或 master)
git push origin main
🏷️命令结构拆解:
git push origin main | | | | | | | └── 远程分支名称(main) | | └──────── 远程仓库名(origin) | └────────────── 推送操作 └────────────────── Git 命令origin 是什么
origin是远程仓库的默认名称,代表:"你的项目克隆自的那个远程 Git 仓库"。
通常指向 GitHub/GitLab 上的仓库 URL,可以使用git remote -v查看 origin 的 URL。
实际执行界面参考:

执行命令后,会弹出一系列认证界面如下:

GitHub 的登录连接界面,用于将本地工具(如 Git 客户端、IDE 插件等)与 GitHub 账号关联:
登录方式分类
| 方式 | 操作流程 | 适用场景 |
|---|---|---|
| Browser/Device(浏览器 / 设备登录) | 点击「Sign in with your browser」,会自动唤起浏览器打开 GitHub 登录页,完成账号密码或 2FA 验证后,即可授权本地工具连接。 | 适合希望快速授权、不熟悉 Token 配置的用户。 |
| Token(令牌登录) | 切换到「Token」标签,需手动输入 GitHub 个人访问令牌(PAT)。PAT 需在 GitHub 个人设置中生成,且需包含仓库访问等权限。 | 适合命令行操作、自动化脚本或无法唤起浏览器的环境。 |
这里按默认选项,选择浏览器,进入GitHub 的 OAuth 授权界面,用于授予「Git Credential Manager」访问你 GitHub 账号的权限:

- 授权应用:Git Credential Manager(由 Git Ecosystem 开发,是 GitHub 官方维护的工具)。
- 权限范围 :
- Gists:读写权限(可创建、修改你的代码片段)。
- Repositories:公共和私有仓库权限(可访问、管理你所有仓库的代码)。
- Workflow:更新 GitHub Action 工作流文件的权限。
- 可以展开,查看具体内容
点击「Authorize git-ecosystem」按钮,进入GitHub 的 sudo 模式验证界面,用于对高风险操作(如修改仓库权限、删除仓库等)进行二次身份确认

- 确认当前登录账号为
@zhengjingjiaozhu。 - 需输入一次性验证码(界面中
XXXXXX输入框),即 TOTP 认证器(之前Microsoft Authenticator中创建的Github授权中的临时一次性密码),
点击「Verify」完成验证,成功后,打开一个本地地址,并提示成功信息,类似如下地址:

在github中,查看仓库文件,已上传了增加的文件。

7. 更新本地仓库
克隆一个仓库后,需要定期更新以获取远程仓库的最新更改。
在仓储的文件目录,右键"open git bash here",打开git bash并进入仓储目录
可选命令一:
执行命令:
git pull origin main
**作用:**从远程仓库 origin 的 main 分支拉取最新更新,并合并到当前本地分支。
实际执行界面参考:

可选命令二:
当前仓储已经设置了上游分支(upstream),通常 clone 时会自动设置,可以使用命令:
git pull
👀查看当前分支的上游情况:
git branch -vv
示例输出:
* main 1a2b3c4 [origin/main] Update README
🔖解释:
-
* main→ 当前分支 -
[origin/main]→ 本地 main 的上游分支是 origin/main,如果没有设置上游分支,则此部分不显示
实际执行界面参考:

📌 如何设置或修复上游分支?
如果你发现本地分支没有 upstream,可以这样设置:
git push -u origin main
或者:
git branch --set-upstream-to=origin/main main
常见场景解析
本地有修改但没 commit,pull 会冲突
解决方式:先提交 or 暂存
提交:
git add .
git commit -m "Work in progress"
git pull origin main
或者使用 stash:
# 把当前本地未提交的修改临时"存起来",并让工作区恢复干净状态。
git stash
git pull origin main
#恢复最新的 stash(并删除它)
git stash pop
本地被改乱了,只想强制对齐远程 main
⚠️ 危险操作(会丢本地内容):
#从远程仓库 origin 获取最新的分支、标签等信息,但不会修改本地代码
git fetch origin
#强制将当前本地分支重置为 origin/main 的内容,丢弃所有本地修改。
git reset --hard origin/main
8. 本地项目推送到 GitHub
🚀 完整流程概览

📋 第一步:准备工作
1. 检查本地项目结构
准备要上传的项目文件,确保结构清晰。
2. 创建 .gitignore 文件(可选)
在项目根目录创建 .gitignore 文件,表明忽略不需要纳入版本控制的文件,避免无意义文件进入仓库。
比如:
-
临时文件
-
构建输出文件(如
dist/) -
IDE/编辑器生成的缓存文件(如
.vscode/,.idea/) -
系统文件(如
Thumbs.db、.DS_Store) -
日志文件(
*.log) -
包管理生成的依赖文件(如
node_modules/,vendor/) -
本地环境配置(如
.env)
.gitignore 内容示例如下:
# Python
__pycache__/
*.py[cod]
*.so
.Python
env/
venv/
.venv/
# Node.js
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# IDE
.vscode/
.idea/
*.swp
*.swo
# 系统
.DS_Store
Thumbs.db
# 日志
*.log
.gitignore 文件的物理位置,类似下面示例:
my-project/
├── src/
│ └── main.py
├── docs/
│ └── README.md
├── .gitignore
└── requirements.txt
🌐 第二步:创建 GitHub 空白仓库
💡提示:如果github上没有对应的仓库,则进行此步;如果是链接已有远程仓库,将本地代码覆盖远程,则不需要新建仓库,直接跳过本布
1. 在 GitHub 上创建新仓库
-
登录 GitHub
-
点击右上角 "+" → "New repository"
-
填写仓库信息:
-
Repository name :
my-project(你的项目名) -
Description: 项目描述(可选)
-
不勾选 README / .gitignore(可选)
-
-
点击 "Create repository"
2. 获取仓库 URL
创建成功后,复制仓库的 URL:
- HTTPS :
https://github.com/你的用户名/my-project.git
💻 第三步:本地 Git 设置
1. 打开 Git Bash 或终端
进入你的项目目录:
bash
cd /path/to/your/project
2. 初始化 Git 仓库
bash
# 初始化 Git
git init
# 检查状态
git status
3. 配置用户信息(如果尚未配置)
bash
# 设置全局用户信息(只需一次)
git config --global user.name "你的GitHub用户名"
git config --global user.email "你的GitHub邮箱"
# 验证配置
git config --list
🔗 第四步:连接远程仓库
1. 添加远程仓库
bash
# 添加远程仓库(命名为 origin)
git remote add origin https://github.com/你的用户名/my-project.git
# 验证远程仓库
git remote -v
# 应该显示:
# origin https://github.com/你的用户名/my-project.git (fetch)
# origin https://github.com/你的用户名/my-project.git (push)
💡提示:这里远程仓库地址,使用目标仓库,无论是已有的,还是新建的空白仓库。
📝 第五步:提交代码
1. 添加文件到暂存区
bash
# 添加所有文件(除了 .gitignore 中指定的)
git add .
# 或者选择性添加
git add README.md src/ docs/
# 检查状态
git status
2. 提交更改
bash
# 首次提交
git commit -m "初始提交:项目基础结构"
# 如果有多个相关更改,可以分开提交
git add README.md
git commit -m "docs: 添加项目说明文档"
git add src/
git commit -m "feat: 实现核心功能"
📤 第六步:推送到 GitHub
1. 空仓库的情况
bash
# 推送到 GitHub 并设置上游分支
git push -u origin main
# 如果你的默认分支是 master
git push -u origin master
2. 已有空仓库的情况
**1)不是空白仓库,**已有远程仓库,想"覆盖远程仓库内容",使用--force参数,强制推送覆盖远程:
git push -u origin main --force
⚠️ **注意:这会把远程仓库的历史全部覆盖掉。**只适用于远程内容没用,需要清空的情况。
**2)不是空白仓库,**已有远程仓库,且想保留其中的内容,这需要先合并到本地项目里:
#添加远程仓库:
git remote add origin <repo-url>
#先拉取远程(允许不相关历史):
git pull origin main --allow-unrelated-histories
#Git 会出现合并冲突(比如 README.md 冲突),解决冲突后提交:
git add .
git commit -m "merge remote initial files"
#推送:
git push -u origin main
3)不是空白仓库, 已有远程仓库,本地项目也已有 .git 历史,你想合并两套历史
这是高级用法,需要:
git pull --allow-unrelated-histories
或使用:
git merge
📚附录
🔑关键命令总结
| 步骤 | 命令 | 说明 |
|---|---|---|
| 开始 | git clone |
克隆远程仓库 |
| 更新 | git pull --rebase |
获取并合并远程更改 |
| 开发 | git checkout -b feature |
创建功能分支 |
| 提交 | git commit -m "msg" |
提交更改 |
| 推送 | git push origin feature |
推送到远程 |
| 协作 | 创建 Pull Request | 请求代码审查 |
| 同步 | git fetch && git rebase |
保持分支更新 |
📌许可种类说明
一、许可证类型与核心特点
| 许可证名称 | 自由度 | 商业使用 | 开源要求 | 典型适用场景 |
|---|---|---|---|---|
| MIT License | 高 | 允许 | 需保留版权声明 | 个人项目、商业开源组件(如前端库) |
| Apache License 2.0 | 高 | 允许 | 需声明修改、包含 NOTICE 文件 | 大型开源项目(如 Apache 基金会项目) |
| GNU GPL v3.0 | 中 | 允许 | 衍生作品必须开源且同协议 | 强调自由开源的项目(如 Linux 生态) |
| BSD 2-Clause/3-Clause | 高 | 允许 | 需保留版权声明(3-Clause 额外要求不使用原作者名称推广) | 对版权声明要求严格的商业开源项目 |
| No license | 无 | 禁止(默认版权法保护) | - | 完全私有、不希望他人使用的项目 |
二、选择建议
- 个人学习 / 开源分享 :优先选 MIT License,它对使用者限制最少,易被社区接受。
- 企业开源项目 :可考虑 Apache License 2.0 (明确专利授权)或 BSD 系列(商业友好且版权清晰)。
- 强调开源生态闭环 :选 GNU GPL v3.0,确保衍生作品也开源。
- 完全私有项目 :保持
No license,但需注意默认受版权法保护,他人无授权不得使用。








