【Git】Git05-02:Github 基础同步命令

📚前言

官方文档: GitHub 入门文档 - GitHub 文档

关于国内访问github访问的速度问题,请参考:加速github访问速度方法:Watt Toolkit


**第五章·第二部分:**Github 基础同步命令(git命令方式)

📖1. GitHub简介

GitHub 就像是"代码的社交网络":

  • ✅ 代码托管 :免费存储您的代码
  • ✅ 版本控制 :基于Git的在线版本管理
  • ✅ 协作平台 :多人共同开发项目
  • ✅ 开源社区 :全球最大的开源代码库

**✍️提示:**链接github的工具以及身份认证方式,见上一章节。

使用 GitHub ,首先需要 GitHub 帐户和仓库。以下使用git命令方式链接github。

🚀 2. GitHub账号注册与配置

步骤1:注册GitHub账号

  1. 访问GitHub官网

  2. 填写注册信息

    • 邮箱地址:使用常用邮箱(建议Gmail/Outlook)
    • 密码:强度高的密码(大小写+数字+符号)
    • 用户名 :重要!以后一直要用到,也是主页名称
      • 建议规则:
        • 使用英文+数字组合
        • 与您的技术方向相关
        • 例如:android-dev-zhang、java-coder-li
  3. 验证邮箱

    • 检查邮箱收件箱
    • 点击验证链接完成注册
  4. 首次登录

    • 会提示,填写相关使用信息
    • 提示选择 GitHub Free 或 GitHub Pro 来访问您的个人帐户的不同功能。
  5. 查看主页(可选)

✍️备注:顶部导航栏功能

模块名称 功能与背景
Overview 个人主页概览,展示个人简介、仓库统计、活跃度等核心信息,是他人了解你的 "门面"。
Repositories 管理个人仓库(图中有 3 个仓库),简称Repo,如果我们想要建立项目,就得先建立仓库;有多个项目,就建立多个仓库。。
Projects 管理项目看板,用于规划和跟踪任务(如功能开发、问题修复的进度),适合团队协作或复杂项目管理。
Packages 管理发布的软件包(如 npm 包、Docker 镜像),方便他人通过包管理器复用你的代码组件。
Stars 展示你收藏的仓库(共 18 个),收藏行为可帮助你快速找到感兴趣的开源项目,也体现你的技术关注领域。

步骤2:完善个人资料

  1. 设置头像

    • 点击右上角头像 → "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网站创建

  1. 登录GitHub

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

    • 通用信息
      • 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。 ✍️备注:各种许可说明,见附录
  3. 创建完成

  4. 查看仓库

    • 点击右上角头像 → 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 在该时间点拥有的所有存储库数据的完整副本,包括项目的每个文件和文件夹的所有版本。

  1. 在 GitHub 上,导航到存储库的主页。

  2. 在文件列表上方,单击code.

  3. 复制存储库的 URL。

    • 要使用 HTTPS 克隆存储库,请在"HTTPS"下单击 。

    • ✍️备注:其他方式

      • SSH方式需要使用 SSH 密钥(包括组织的 SSH 证书颁发机构颁发的证书)

      • GitHub CLI,要使用 GitHub CLI 克隆存储库

  4. 打开Git Bash。

  5. 将当前工作目录更改为要克隆目录的位置。

  6. 键入 ,然后粘贴您之前复制的 URL。git clone命令格式如下:

    复制代码
    `git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY
    `
  7. 按 Enter 键创建本地克隆。

  8. 实际执行界面参考:

  9. 以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 上创建新仓库
  1. 登录 GitHub

  2. 点击右上角 "+" → "New repository"

  3. 填写仓库信息:

    • Repository name : my-project(你的项目名)

    • Description: 项目描述(可选)

    • 不勾选 README / .gitignore(可选)

  4. 点击 "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,但需注意默认受版权法保护,他人无授权不得使用。
相关推荐
AlfredZhao1 分钟前
已提交过的文件夹,如何从 GitHub 中删除
github
@呱呱爱学习9 小时前
2026年09月28日 | 呱呱AI日报】GitHub 发布 Copilot WSL 教程,介绍在 Ubuntu 中运行编程 Agent
人工智能·github·copilot
誰能久伴不乏10 小时前
看懂 Git 团队协作全流程:分支、提交、PR、rebase 到底在干嘛
git
阿里嘎多学长12 小时前
2026-09-28 GitHub 热点项目精选
开发语言·程序员·github·代码托管
程序员清风12 小时前
vLLM 实战:用 OpenAI 兼容接口部署本地大模型推理服务
开源·github·vllm
七牛云行业应用15 小时前
Jev 报 401 / api_key_required 怎么解决:TypeSafe AI 官方错误码表与排查步骤
算法·github
sunshine22 girl16 小时前
git tag-项目流程
git
誰能久伴不乏16 小时前
保姆级 GitHub 协作教程
github
miofly21 小时前
Claude 自主发现类 CRISPR 结构的新型逆转录酶系统:Anthropic 生命科学实验室的早期成果
开源·github
HelloGitHub1 天前
《HelloGitHub》第 126 期
开源·github