刚接触 Git 和 GitHub 的新手,通常会遇到两大难题:一是国内网络环境下的连接超时,二是反复输入密码的繁琐。本篇笔记旨在提供一套清晰、高效的解决方案,并整理了常用命令速查表,作为个人备忘。

1. 基础概念

  • Git:一个安装在本地的版本控制软件,如同代码的“时光机”,负责追踪文件变更。
  • GitHub:一个代码托管网站服务,如同存放“时光机”的云端保险库,用于同步、分享和协作。

2. 初始配置

开始前,请确保已完成以下基础设置。

  • 安装与注册

    • Git 工具:访问 git-scm.com 下载并安装。
    • GitHub 账号:访问 github.com 注册一个账号。
  • 配置个人信息 这是你的代码“署名”,至关重要。打开 Git Bash(或终端)执行:

    # 建议使用 GitHub 提供的匿名邮箱,可在 https://github.com/settings/emails 找到
    git config --global user.name "你的GitHub用户名"
    git config --global user.email "你的GitHub匿名邮箱"
    

注意 user.name 最好和你的 GitHub 用户名保持一致,但不是强制的。user.email 则必须配置正确,否则可能无法将提交与你的 GitHub 账户关联起来。

3. 网络加速:配置代理

为解决 git clonegit push 时的连接超时问题,最直接的方法是为 Git 配置代理。

  1. 获取代理端口 在你的代理客户端(如 Clash, V2RayN)设置中找到 HTTP 或 SOCKS5 代理端口。常见端口有 7890/10808 (HTTP) 或 7891 (SOCKS5)。

  2. 执行配置命令

    # 方案一:HTTP 代理 (将 7890 换成你的端口)
    git config --global http.proxy http://127.0.0.1:7890
    git config --global https.proxy http://127.0.0.1:7890
    
    # 方案二:SOCKS5 代理 (将 7891 换成你的端口)
    git config --global http.proxy socks5://127.0.0.1:7891
    git config --global https.proxy socks5://127.0.0.1:7891
    
  3. 取消代理 如果不再需要,可使用 --unset 命令移除配置。

    git config --global --unset http.proxy
    git config --global --unset https.proxy
    

4. 核心流程:第一个项目 (HTTPS)

我们以最通用的 HTTPS 方式走一遍完整流程。

  1. 在 GitHub 创建仓库 点击右上角 + -> New repository。建议勾选 Add a README file, Add .gitignore, 和 Choose a license

  2. 克隆到本地 在仓库页面,点击 <> Code 按钮,复制 HTTPS 标签下的地址。

    # 使用 HTTPS 地址克隆仓库
    git clone https://github.com/your-username/my-first-repo.git
    
    # 进入项目目录
    cd my-first-repo
    

    克隆完成后,用你的代码编辑器(如 VS Code)打开这个项目文件夹,然后开始修改文件。

  3. 修改与推送 本地修改文件后,在终端中执行“三板斧”操作:

    # 1. 添加所有变更到暂存区
    git add .
    
    # 2. 提交变更,并附上说明
    git commit -m "feat: Add my first file"
    
    # 3. 推送到 GitHub
    git push
    

    补充:使用 VS Code 图形化操作 如果你使用 VS Code,上述“三板斧”操作也可以通过其图形界面完成。在左侧“源代码管理”面板中,点击文件旁的 + 号进行暂存 (add),在输入框填写信息后按 ✔️ 完成提交 (commit),最后点击“同步更改”按钮进行推送 (push)。

    注意:HTTPS 推送认证 首次 push 时,Git 会要求认证。此时在密码提示框中输入的不是你的 GitHub 登录密码,而是需要预先生成的 Personal Access Token (PAT)。你可以在 GitHub Token 设置页面 生成一个,至少勾选 repo 权限,然后复制 Token 用于认证(Token 只会展示一次,请及时复制)。

5. 可选进阶:配置 SSH 实现免密

如果不想每次 push 都处理 PAT 认证,配置 SSH 密钥是最佳选择。

  1. 生成并添加密钥

    • 生成密钥:在终端执行 ssh-keygen -t rsa -b 4096 -C "你的GitHub匿名邮箱",然后一路回车。
    • 添加公钥:执行 cat ~/.ssh/id_rsa.pub,复制全部输出内容。访问 GitHub SSH Keys 设置页面,点击 New SSH key,将复制的内容粘贴进去并保存。
  2. 测试与使用

    • 测试连接:执行 ssh -T git@github.com,看到欢迎信息即表示成功。
    • 使用方式:此后 clone 仓库时,请务必复制 SSH 格式的地址 (git@github.com:...),这样克隆的项目才能实现免密推送。

注意:SSH 与代理 git config 配置的 http.proxy 仅对 HTTPS 协议有效,不影响 SSH 协议。如果网络环境严苛到 SSH 协议也无法直连,则需为其单独配置代理(如修改 ~/.ssh/config 文件),这对新手较为复杂。因此,“HTTPS + 代理” 是最稳定通用的入门方案。

6. Git 常用命令速查表

初始配置与创建

命令 说明
git config --global user.name "你的姓名" 设置全局用户名 (一次性)
git config --global user.email "你的邮箱" 设置全局邮箱 (一次性)
git init 在当前目录初始化新仓库
git clone <仓库URL> 克隆远程仓库到本地

日常工作

命令 说明
git status 查看工作区和暂存区的状态
git add <文件名/目录> 添加文件到暂存区 (使用 . 添加所有)
git commit -m "提交信息" 提交暂存区的更改到本地仓库
git diff 查看工作区与暂存区的差异
git diff --staged 查看暂存区与上次提交的差异

分支操作

命令 说明
git branch 查看所有本地分支
git switch <分支名> 切换到指定分支
git switch -c <新分支名> 创建并切换到新分支
git branch -m <新分支名> 重命名当前分支
git merge <分支名> 将指定分支合并到当前分支
git branch -d <分支名> 删除已合并的分支

远程协作

命令 说明
git remote -v 查看已配置的远程仓库
git remote add <远程名> <仓库URL> 添加一个新的远程仓库
git pull 从远程仓库拉取并合并更新
git fetch 从远程仓库拉取更新,但不合并
git push 推送本地提交到远程仓库

历史与撤销

命令 说明
git log --oneline 单行简洁格式查看提交历史
git restore <文件名> 撤销工作区中对文件的修改
git restore --staged <文件名> 将文件从暂存区移回工作区
git revert <commit-id> 创建一个新提交来撤销指定提交
git reset --hard <commit-id> 强行重置到指定提交,丢弃之后的所有更改

暂存工作

命令 说明
git stash 临时保存未提交的修改
git stash pop 恢复并删除最近一次暂存的修改

7. 总结与避坑指南

  1. 网络问题用代理:遇到 Connection timed out,检查第 3 步的代理配置。
  2. HTTPS 推送用 PAT:使用 HTTPS 协议时,认证密码是 Personal Access Token
  3. 免密推送用 SSH:想省去输入 PAT 的麻烦,按第 5 步配置 SSH,并使用 SSH 地址克隆仓库。
  4. 代理不影响 SSH:牢记 http.proxy 管不了 SSH 协议的流量。
  5. 养成良好习惯:工作开始前 git pull,推送前 git commit -m "清晰的说明"