【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,但需注意默认受版权法保护,他人无授权不得使用。
相关推荐
CLTHREE4 小时前
GitHub项目协作完整指南:从Fork到本地开发
github
小鱼小鱼.oO5 小时前
GitHub Actions 和 GitLab CI/CD
ci/cd·gitlab·github
AWS官方合作商5 小时前
告别漫长等待:利用 Amazon GameLift Servers 实现分钟级快速迭代
前端·git·云计算·github·aws
红尘客栈25 小时前
git文件的上传
git
蝎子莱莱爱打怪6 小时前
MinIO的安装记录
java·后端·github
陈陈陈建蕾7 小时前
Mac使用FFmpeg进行屏幕录制,并使用VLC本地播放
ffmpeg·github
黎茗Dawn7 小时前
git-Windows-my-dell-笔记
开发语言·windows·git
逛逛GitHub7 小时前
清华联合开源!首个基于 MCP 的 RAG 框架,太秀了。
github
阿凤2111 小时前
如何访问GitHub?
github