GitHub入门

文章目录

    • 前言
    • [一、GitHub 基础入门](#一、GitHub 基础入门)
      • [1.1 什么是 GitHub?](#1.1 什么是 GitHub?)
      • [1.2 GitHub 与 Git 的关系](#1.2 GitHub 与 Git 的关系)
      • [1.3 GitHub 的价值](#1.3 GitHub 的价值)
    • [二、账号注册与 SSH 配置](#二、账号注册与 SSH 配置)
      • [2.1 注册 GitHub 账号](#2.1 注册 GitHub 账号)
      • [2.2 安装 Git 并配置](#2.2 安装 Git 并配置)
      • [2.3 SSH 密钥配置(重点)](#2.3 SSH 密钥配置(重点))
        • [生成 SSH 密钥](#生成 SSH 密钥)
        • [启动 SSH 代理并添加私钥](#启动 SSH 代理并添加私钥)
        • [复制公钥到 GitHub](#复制公钥到 GitHub)
        • 验证是否成功
    • 三、仓库创建与代码提交
      • [3.1 从本地开始:已有项目上传到 GitHub](#3.1 从本地开始:已有项目上传到 GitHub)
      • [3.2 从 GitHub 开始:克隆已有仓库](#3.2 从 GitHub 开始:克隆已有仓库)
    • [四、Git 分支管理](#四、Git 分支管理)


前言

作为一名程序员,GitHub 是我们每天都要打交道的平台。但很多初学者对 GitHub 的理解往往停留在"代码网盘"的层面,对其强大的协作功能知之甚少。


一、GitHub 基础入门

1.1 什么是 GitHub?

GitHub = 基于 Git 的代码托管 + 协作开发平台 。简单来说,它是程序员的 "云端代码网盘 + 协作工作台 + 项目社区"

核心功能一览
功能 说明
代码托管 把项目代码存在云端
版本管理 记录每一次修改,可回滚、可对比
团队协作 多人一起开发同一个项目
Issue 任务/BUG管理,提需求、报 bug
Pull Request 提交代码改动,审核后合并
GitHub Actions 自动化测试、打包、部署
GitHub Pages 免费搭建静态网站
Star/Fork/Watch 收藏、复制、关注别人项目

1.2 GitHub 与 Git 的关系

这是初学者最容易混淆的概念:

Git GitHub
本质 本地版本控制工具 云端代码托管平台
是否需要联网 不需要 需要
主要作用 记录代码历史、分支管理 存放代码、团队协作

一句话总结:Git 是工具,GitHub 是平台。

你在本地用 Git 写代码,然后通过 push 命令把代码上传到 GitHub。GitHub 让 Git 从"本地工具"变成了"云端协作平台"。

1.3 GitHub 的价值

  • 代码安全备份:电脑坏了也不怕
  • 多人协作开发:分工写代码,不互相覆盖
  • 规范化流程:提交 → 审核 → 合并 → 发布
  • 开源共享:全球开发者一起贡献项目
  • 降低沟通成本:代码、文档、任务都在一处

二、账号注册与 SSH 配置

2.1 注册 GitHub 账号

访问 github.com,使用邮箱注册即可(国内 QQ/网易邮箱、国外 Gmail 均可)。

2.2 安装 Git 并配置

下载 Git:Git for Windows

安装后,打开 Git Bash,配置全局用户名和邮箱:

bash 复制代码
# 配置用户名(替换成你的)
git config --global user.name "Your GitHub Username"

# 配置邮箱(替换成你的)
git config --global user.email "Your GitHub Email"


查看配置是否成功:

bash 复制代码
git config --list

可选的美化配置:

bash 复制代码
# 开启彩色输出
git config --global color.ui auto

# 配置别名(偷懒必备)
git config --global alias.st status       # git st 替代 git status
git config --global alias.br branch       # git br 替代 git branch

2.3 SSH 密钥配置(重点)

SSH 比 HTTPS 更安全、更方便,配置后无需每次输入密码。

生成 SSH 密钥

在 Git Bash 中执行:

bash 复制代码
ssh-keygen -t ed25519 -C "your_email@example.com"

全程按回车,不用输入任何内容。生成后:

  • 私钥:~/.ssh/id_ed25519绝对不能泄露!
  • 公钥:~/.ssh/id_ed25519.pub(要复制到 GitHub)
启动 SSH 代理并添加私钥
bash 复制代码
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
复制公钥到 GitHub
bash 复制代码
# Windows
clip < ~/.ssh/id_ed25519.pub

# Mac
pbcopy < ~/.ssh/id_ed25519.pub

登录 GitHub → 头像 → Settings → SSH and GPG keys → New SSH key,粘贴公钥并保存。

验证是否成功
bash 复制代码
ssh -T git@github.com

看到 Hi 用户名! You've successfully authenticated 即表示成功。


三、仓库创建与代码提交

3.1 从本地开始:已有项目上传到 GitHub

bash 复制代码
# 进入项目文件夹
cd your-project

# 初始化 Git 仓库(指定默认分支为 main)
git init --initial-branch=main

# 创建 .gitignore 文件(忽略不需要上传的文件)
touch .gitignore

# 添加所有文件到暂存区
git add .

# 提交到本地仓库
git commit -m "first commit"

# 在 GitHub 新建空仓库(不要勾选初始化选项)
# 关联远程仓库
git remote add origin git@github.com:用户名/仓库名.git

# 推送到 GitHub
git push -u origin main

3.2 从 GitHub 开始:克隆已有仓库

bash 复制代码
# 克隆仓库到本地
git clone git@github.com:用户名/仓库名.git

# 修改文件后提交
git add 文件名
git commit -m "修改说明"
git push origin main

四、Git 分支管理

4.1 分支的概念

分支让你能在不影响主代码的前提下,独立开发新功能。

可以把主分支(main)想象成一篇论文的终稿,功能分支(feature)就是论文的副本------你在副本上写新章节,写好了再合并回终稿。

4.2 常用分支类型

分支类型 命名规范 用途
主分支 main/master 存放稳定、可发布的代码
开发分支 develop 团队日常开发分支
功能分支 feature/xxx 开发单个新功能
Bug修复分支 bugfix/xxx 修复开发中的 Bug
紧急修复分支 hotfix/xxx 修复线上紧急 Bug

4.3 分支核心操作

bash 复制代码
# 查看所有分支
git branch

# 创建并切换到新分支(最常用)
git checkout -b feature/login

# 切换分支
git switch main

# 合并分支(先切到目标分支)
git switch main
git merge feature/login

# 删除已合并的分支
git branch -d feature/login

4.4 合并冲突与解决

冲突产生的原因:两个分支修改了同一文件的同一行代码。

模拟冲突场景
  1. 创建 calculator.py 文件:
python 复制代码
def add(a, b):
    result = a + b
    return result
  1. feature 分支修改为含税费的版本
  2. main 分支修改为四舍五入的版本
  3. 合并时触发冲突
解决冲突

冲突文件会包含标记:

python 复制代码
<<<<<<< HEAD
result = round(a + b, 2)  # main分支的修改
=======
result = (a + b) * 1.1    # feature分支的修改
>>>>>>> feature

解决思路:删除标记,保留需要的代码,合并逻辑:

python 复制代码
result = round((a + b) * 1.1, 2)  # 融合两个功能

保存文件后:

bash 复制代码
git add calculator.py
git commit -m "解决冲突:合并税费和四舍五入功能"

4.5 分支删除

删除本地分支
bash 复制代码
# 删除已合并的分支
git branch -d feature/login

# 强制删除未合并的分支(谨慎!)
git branch -D feature/unfinished
删除远程分支
bash 复制代码
git push origin --delete feature/login
误删恢复
bash 复制代码
# 查看操作历史,找到最后一次提交的哈希值
git reflog

# 从提交记录恢复分支
git checkout -b feature/login 哈希值

4.6 提交规范

提交信息格式
复制代码
<类型>: <简短描述>

<详细描述(可选)>
类型说明
类型 说明 示例
feat 新增功能 feat: 新增用户登录接口
fix 修复 Bug fix: 修复密码加密错误
docs 修改文档 docs: 更新API文档
style 代码格式调整 style: 格式化代码
refactor 代码重构 refactor: 简化函数逻辑
test 添加测试 test: 添加单元测试
chore 工具配置修改 chore: 更新.gitignore
相关推荐
逛逛GitHub2 小时前
5 天 2 万 Star 的谷歌 GitHub 项目,让我看到了未来软件的形态。
github
一直都在5722 小时前
nginx和docker面试题
nginx·docker·github
Think Spatial 空间思维2 小时前
GitHub Actions高阶用法:实现容器镜像的自动化安全扫描与合规检查
安全·自动化·github
CoderJia程序员甲7 小时前
GitHub 热榜项目 - 日榜(2026-03-08)
ai·大模型·llm·github·ai教程
车骑12 小时前
用 EasyBot 搭一个「一人内容工作台」,文图视频全搞定
大模型·github
CoderJia程序员甲13 小时前
GitHub 热榜项目 - 日榜(2026-03-10)
人工智能·ai·大模型·github·ai教程
CoderJia程序员甲13 小时前
GitHub 热榜项目 - 日榜(2026-03-11)
github
研究点啥好呢16 小时前
3月10日GitHub热门项目推荐|自动化的浪潮
运维·人工智能·ai·自动化·github
IT 行者17 小时前
每天了解几个MCP SERVER:GitHub
github·mcp