git与github从零到融会贯通:你的最后一本github使用指南


目录


一、前置知识

1.1 Git 是什么

Git 是一个分布式版本控制系统(Distributed Version Control System, DVCS)。它由 Linus Torvalds(Linux 内核的创始人)于 2005 年创建。

📌 通俗理解:
想象你在写一篇论文,每次修改后你都会另存为一个新文件:论文_v1.doc论文_v2.doc论文_最终版.doc论文_最终最终版.doc…… Git 就是帮你自动、优雅地管理这些"版本"的工具。你能随时回到任何一个历史版本,也能看到每次改了什么、谁改的、什么时候改的。

Git 的核心能力:

能力 说明
版本回溯 随时回退到任意历史版本
分支管理 并行开发多个功能,互不干扰
协作开发 多人同时修改同一项目,自动合并
变更追踪 精确记录每一行代码是谁在何时修改的
分布式 每个开发者都拥有完整的代码仓库副本

1.2 GitHub 是什么

GitHub 是一个基于 Git 的代码托管平台。你可以把它理解为"代码的云盘"(但功能远比云盘强大)。

📌 Git ≠ GitHub

  • Git 是版本控制工具(跑在你电脑上的程序)
  • GitHub 是存放 Git 仓库的网站(远程服务器)
  • 类似的平台还有:GitLab、Gitee(码云)、Bitbucket

GitHub 提供的额外能力:

能力 说明
远程仓库托管 代码存在云端,不怕本地硬盘损坏
Pull Request 代码审查与合并请求机制
Issues 任务跟踪与 Bug 管理
Actions (CI/CD) 自动化测试与部署
GitHub Pages 免费静态网站托管

1.3 核心概念图解

理解 Git 的四个"区域"是掌握 Git 的关键:

┌──────────────┐     git add      ┌──────────────┐    git commit    ┌──────────────┐    git push     ┌──────────────┐
│   工作区      │  ──────────────> │    暂存区     │ ──────────────> │   本地仓库     │ ─────────────> │   远程仓库     │
│  Working     │                  │   Staging    │                │    Local      │               │   Remote     │
│  Directory   │ <────────────── │    Area      │                │  Repository  │ <──────────── │  Repository  │
│              │   git checkout   │   (Index)    │                │  (.git/)     │   git pull    │  (GitHub)    │
│  (你的文件)   │     git restore  │  (临时保存)   │                │  (版本历史)    │               │  (云端)       │
└──────────────┘                  └──────────────┘                └──────────────┘               └──────────────┘
工作区(Working Directory)

你电脑上能看到、能编辑的项目文件夹。所有文件修改都发生在这里。

暂存区(Staging Area / Index)

一个中间区域。你选择哪些修改要放入下一次提交。相当于购物车——你挑选要买的商品(git add),然后一起结账(git commit)。

本地仓库(Local Repository)

存放在项目根目录下隐藏文件夹 .git 中。这里保存了所有版本历史、提交记录、分支信息等。git commit 就是把暂存区的内容永久保存到这里。

远程仓库(Remote Repository)

托管在 GitHub / GitLab 等服务器上的仓库。git push 把本地仓库同步上去,git pull 从远程拉取更新。


1.4 文件在 Git 中的四种状态

   Untracked              Unmodified              Modified              Staged
  (未跟踪)                (未修改)                (已修改)              (已暂存)

 新创建的文件    ──编辑──>  文件被修改  ──git add──>  文件进入暂存区
      │                       │                      │
      │                 git commit                  git commit
      │                       │                      │
      └───────────────────────┴──────────────────────┘
                                │
                           Unmodified
                           (未修改状态)
状态 含义 如何产生
Untracked(未跟踪) Git 不知道这个文件的存在 新建文件,从未 git add
Unmodified(未修改) 文件和上次提交一样,没有改动 git commit 之后的状态
Modified(已修改) 文件内容变了,但还没放入暂存区 编辑了已跟踪的文件
Staged(已暂存) 修改已被标记,等待提交 执行了 git add

1.5 一张图理解整个流程

  你的电脑 (本地)                           GitHub (远程)
  ──────────────                           ─────────────

  ① git init            → 初始化,创建 .git 隐藏文件夹
  ② 写代码、改文件        → 在工作区操作
  ③ git add .           → 把所有改动加入暂存区
  ④ git commit -m "..." → 把暂存区内容提交到本地仓库
  ⑤ git push            → 把本地仓库推送到 GitHub   ────────>  ☁️ GitHub 仓库
  
  反过来(拉取更新):
  ☁️ GitHub 仓库  ────────>  ⑥ git pull   → 把远程更新拉到本地

二、环境准备

2.1 检查 Git 是否已安装

打开终端,输入:

git --version

如果已安装,会显示类似:

git version 2.43.0

如果显示 command not found 或类似提示,说明未安装,请看下一节。


2.2 安装 Git(未安装时)

Ubuntu / Debian
sudo apt update
sudo apt install git -y

安装完成后验证:

git --version
CentOS / Fedora / RHEL
# CentOS / RHEL
sudo yum install git -y

# Fedora
sudo dnf install git -y
macOS
# 方式一:使用 Homebrew(推荐)
brew install git

# 方式二:安装 Xcode Command Line Tools(会附带 Git)
xcode-select --install
Windows
  1. 访问 https://git-scm.com/download/win
  2. 下载安装包,双击运行
  3. 安装过程中一路默认即可(推荐勾选"Git Bash Here",这会提供一个类 Linux 终端)
  4. 安装完成后,右键菜单会出现 “Git Bash Here”,打开即可使用 Git 命令

2.3 首次配置 Git 用户信息

⚠️ 这一步必须做! Git 要求每次提交都附带用户名和邮箱。如果不配置,后续提交会报错。

# 设置全局用户名(替换成你自己的)
git config --global user.name "Your Name"

# 设置全局邮箱(替换成你自己的,建议和 GitHub 注册邮箱一致)
git config --global user.email "your-email@example.com"

📌 为什么要和 GitHub 邮箱一致?
如果邮箱一致,GitHub 能正确识别提交者,在你的 Contribution 热力图上显示绿色小方块。否则提交记录会显示为灰色头像,不计入贡献统计。

其他常用配置:

# 设置默认分支名为 main(GitHub 从 2020 年起默认使用 main 而非 master)
git config --global init.defaultBranch main

# 设置默认编辑器(可选,设为 nano 或 vim)
git config --global core.editor "nano"

# 开启命令行颜色显示
git config --global color.ui auto

2.4 检查配置是否生效

# 查看所有配置
git config --list

# 只查看全局配置
git config --global --list

# 查看特定配置项
git config --global user.name
git config --global user.email

配置文件实际存放在 ~/.gitconfig(全局)和 项目内 .git/config(项目级),你也可以直接编辑:

cat ~/.gitconfig

输出示例:

[user]
    name = Your Name
    email = your-email@example.com
[init]
    defaultBranch = main

2.5 注册 GitHub 账号

  1. 访问 https://github.com
  2. 点击右上角 Sign up
  3. 输入邮箱、密码、用户名
  4. 完成验证码验证
  5. 查收验证邮件,点击链接激活账号

📌 免费账号已足够个人使用:无限公共/私有仓库、无限协作者、每月 2000 分钟 Actions 额度。


三、认证方式详解(SSH vs HTTPS)

当你执行 git pushgit clone 与 GitHub 通信时,GitHub 需要验证你的身份。有两种主流方式。

3.1 两种方式对比

对比维度 HTTPS SSH
仓库地址格式 https://github.com/用户名/仓库名.git git@github.com:用户名/仓库名.git
认证方式 用户名 + Personal Access Token(密码已废弃) SSH 密钥对(公钥+私钥)
配置难度 简单,但每次可能需输入 Token 稍复杂(一次性配置)
使用体验 可用凭证管理器缓存 配置后完全免密
防火墙友好度 ✅ 通过 443 端口,几乎不会被封 ❌ 部分企业/学校网络封禁 22 端口
推荐场景 临时使用、受限网络 长期开发(强烈推荐)

3.2 HTTPS 方式配置

3.2.1 什么是 Personal Access Token

⚠️ 重要提示: 从 2021 年 8 月 13 日起,GitHub 不再支持密码认证。你必须使用 Personal Access Token (PAT) 代替密码。

Personal Access Token 就是一个"临时密码"。你可以在 GitHub 上生成一个有权限限制、有过期时间的 Token,用它代替密码进行 Git 操作。

3.2.2 创建 Token 步骤
  1. 登录 GitHub → 点击右上角头像 → Settings
  2. 左侧菜单最底部 → Developer settings
  3. 左侧菜单 → Personal access tokensTokens (classic)
  4. 点击 Generate new tokenGenerate new token (classic)
  5. 填写 Note(备注,随便写,如 “my-linux-laptop”)
  6. 选择过期时间(Expiration),建议选 90 天或自定义
  7. 勾选权限(至少勾选以下):
    • repo(完整的仓库读写权限)
    • workflow(如果需要 GitHub Actions)
  8. 点击页面最底部 Generate token
  9. ⚠️ 立即复制保存这个 Token! 离开页面后永远不会再显示

Token 长这样(示例):

ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
3.2.3 缓存凭证(避免每次都输入)
# 让 Git 记住你的凭证(默认 15 分钟有效)
git config --global credential.helper cache

# 永久存储(明文存储在 ~/.git-credentials,不太安全但方便)
git config --global credential.helper store

# Linux 推荐:使用 libsecret(加密存储)
sudo apt install libsecret-1-0 libsecret-1-dev -y
git config --global credential.helper /usr/lib/git-core/git-credential-libsecret

# macOS 推荐:使用 osxkeychain
git config --global credential.helper osxkeychain

3.3 SSH 方式配置(推荐)

3.3.1 检查是否已有 SSH 密钥
ls -la ~/.ssh

如果看到 id_rsaid_rsa.pubid_ed25519id_ed25519.pub,说明已有密钥。

文件名 说明
id_ed25519 / id_rsa 私钥(绝!对!不!能!泄!露!)
id_ed25519.pub / id_rsa.pub 公钥(可以放心给 GitHub)

📌 推荐使用 Ed25519 算法(比 RSA 更安全、更快)。如果没有密钥,继续下一步。

3.3.2 生成新的 SSH 密钥
# 使用 Ed25519 算法(推荐)
ssh-keygen -t ed25519 -C "your-email@example.com"

# 如果你的系统不支持 Ed25519,使用 RSA(备选)
ssh-keygen -t rsa -b 4096 -C "your-email@example.com"

📌 -C 后面的邮箱是注释,建议填写你的 GitHub 注册邮箱。

执行后会提示:

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/you/.ssh/id_ed25519):   ← 直接回车(使用默认路径)
Enter passphrase (empty for no passphrase):                        ← 输入密码(可选,建议回车跳过)
Enter same passphrase again:                                       ← 再次输入密码

📌 关于 passphrase:设置了更安全,但每次 git push 都要输入。初学者建议直接回车跳过

3.3.3 将 SSH 公钥添加到 GitHub

第一步:复制公钥内容

cat ~/.ssh/id_ed25519.pub

输出类似:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your-email@example.com

全选并复制这一整行。

第二步:添加到 GitHub

  1. 登录 GitHub → 右上角头像 → Settings
  2. 左侧菜单 → SSH and GPG keys
  3. 点击绿色按钮 New SSH key
  4. Title:随便填,例如 “My Linux Laptop”
  5. Key type:选择 Authentication Key
  6. Key:粘贴刚才复制的公钥
  7. 点击 Add SSH key
  8. 输入 GitHub 密码确认
3.3.4 测试 SSH 连接
ssh -T git@github.com

首次连接会提示:

The authenticity of host 'github.com (IP ADDRESS)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

输入 yes 并回车。

如果配置成功,会显示:

Hi 你的用户名! You've successfully authenticated, but GitHub does not provide shell access.

看到这条消息就说明 SSH 配置完成了!🎉


四、.gitignore 文件详解

4.1 什么是 .gitignore

.gitignore 是一个放在项目根目录的纯文本文件,告诉 Git 哪些文件/文件夹不需要版本控制。每一行写一个忽略规则。

4.2 为什么需要 .gitignore

不该上传的 原因
node_modules/venv/__pycache__/ 依赖包体积巨大,且可通过 package.json / requirements.txt 重建
.envconfig.local.json 包含密码、API 密钥等敏感信息
*.log*.tmp 临时文件、日志文件没有版本管理价值
dist/build/ 编译产物,可从源码重新生成
.DS_StoreThumbs.db 操作系统自动生成的无关文件
*.mp4*.zip、大文件 二进制大文件不适合 Git 管理(应使用 Git LFS)

4.3 常用 .gitignore 模板

Python 项目
# 字节码
__pycache__/
*.py[cod]
*$py.class

# 虚拟环境
venv/
env/
.env
.venv

# 环境变量(含敏感信息)
.env
.env.local

# IDE
.vscode/
.idea/
*.swp
*.swo

# 系统文件
.DS_Store
Thumbs.db

# 分发/打包
dist/
build/
*.egg-info/

# 日志
*.log

# 数据库
*.db
*.sqlite3

# Jupyter Notebook
.ipynb_checkpoints/
Node.js 项目
# 依赖
node_modules/

# 环境变量
.env
.env.local

# 构建输出
dist/
build/

# 日志
*.log
npm-debug.log*

# IDE
.vscode/
.idea/

# 系统
.DS_Store
Thumbs.db

# 缓存
.eslintcache
*.tsbuildinfo
通用项目
# 操作系统
.DS_Store
Thumbs.db
desktop.ini

# IDE
.vscode/
.idea/
*.swp
*.swo
*~

# 临时文件
*.tmp
*.temp
*.log
*.bak

# 压缩包
*.zip
*.tar.gz
*.rar
*.7z

# 视频/音频/大文件
*.mp4
*.avi
*.mov
*.mp3
*.wav
*.iso

4.4 .gitignore 规则语法

规则 说明 示例
file.txt 忽略指定文件 secret.txt
*.log 通配符,忽略所有 .log 文件 error.log, debug.log
dir/ 忽略整个目录 node_modules/
dir/*.txt 忽略 dir 下的 .txt 文件 dir/a.txt
!file.txt 取反,不忽略该文件 !important.log
**/dir 匹配任意层级下的 dir 目录 a/b/dir, dir
# 开头 注释行 # 这是注释

⚠️ 注意: .gitignore 只对尚未被跟踪的文件生效。如果文件已经被 git addgit commit 过,需要先从 Git 中移除才行。


五、场景一:从零开始创建并上传全新工程(最常用)

这是最常见的情况:你在本地有一个项目文件夹,想把它上传到 GitHub。

5.1 本地初始化 Git 仓库

# 进入你的项目文件夹
cd /path/to/your/project

# 初始化 Git 仓库(创建 .git 隐藏文件夹)
git init

执行后,你的项目就变成了一个 Git 仓库。此时项目里的文件都处于 Untracked(未跟踪) 状态。

可以通过以下命令确认:

git status

输出示例:

On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        main.py
        requirements.txt
        test/

nothing added to commit but untracked files present (use "git add" to track)

5.2 在 GitHub 上创建远程仓库

  1. 登录 GitHub
  2. 点击右上角 “+” 号 → New repository
  3. 填写仓库信息:
    • Repository name:仓库名(如 my-project
    • Description:描述(可选)
    • Public / Private:选择公开或私有
    • ⚠️ 不要勾选 “Add a README file”
    • ⚠️ 不要勾选 “Add .gitignore”
    • ⚠️ 不要勾选 “Choose a license”
  4. 点击 Create repository

📌 为什么不要勾选那些选项? 因为 GitHub 会自动创建初始提交。如果勾选了,你的本地仓库和远程仓库会有不同的初始历史,合并时会很麻烦。保持远程仓库完全空白,让本地仓库来推动第一次提交。

创建后,GitHub 会显示一个指引页面,其中包含远程仓库地址,类似:

  • SSH:git@github.com:your-username/my-project.git
  • HTTPS:https://github.com/your-username/my-project.git

5.3 关联本地仓库与远程仓库

# 使用 SSH(推荐)
git remote add origin git@github.com:your-username/my-project.git

# 或使用 HTTPS
git remote add origin https://github.com/your-username/my-project.git

📌 “origin” 是远程仓库的默认别名。你可以改成任何名字,但约定俗成叫 origin。就像给联系人起个外号,以后用 origin 代替那一长串地址。

验证关联是否成功:

git remote -v

输出示例:

origin  git@github.com:your-username/my-project.git (fetch)
origin  git@github.com:your-username/my-project.git (push)

5.4 推送代码到 GitHub

# 第一步:把所有文件加入暂存区
git add .

# 第二步:提交到本地仓库
git commit -m "Initial commit"

# 第三步:推送到 GitHub(首次推送需要指定分支)
git push -u origin main

📌 -u 参数(–set-upstream) 的作用:把本地 main 分支和远程 origin/main 分支建立追踪关系。以后在这个分支上只需 git push 即可,不用每次写 git push origin main

推送成功后,终端显示类似于:

Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (5/5), 1.20 KiB | 1.20 MiB/s, done.
Total 5 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:your-username/my-project.git
 * [new branch]      main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.

现在刷新 GitHub 页面,你的代码已经在上面了!🎉

5.5 完整流程图

┌─────────────────────────────────────────────────────────────────┐
│                    从零上传项目到 GitHub 完整流程                  │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐  │
│  │ ① 写代码  │ -> │ ② git init│ -> │ ③ 创建   │ -> │ ④ git add│  │
│  │ 本地项目  │    │ 初始化仓库 │    │ .gitignore│    │ 添加文件  │  │
│  └──────────┘    └──────────┘    └──────────┘    └──────────┘  │
│                                                         │       │
│                                                         ▼       │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐  │
│  │ ⑧ 完成! │ <- │ ⑦ git push│ <- │ ⑥ git    │ <- │ ⑤ git    │  │
│  │ 🎉      │    │ 推送到远程 │    │ remote   │    │ commit   │  │
│  │         │    │           │    │ add      │    │ 本地提交  │  │
│  └──────────┘    └──────────┘    └──────────┘    └──────────┘  │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

六、场景二:已有 GitHub 仓库,克隆到本地开发后推送

这种情况是:项目已经在 GitHub 上存在,你想把它下载到本地电脑进行开发。

# 克隆仓库到本地
git clone git@github.com:username/repo-name.git

# 进入项目目录
cd repo-name

# 正常开发...修改代码...

# 查看状态
git status

# 添加修改
git add .

# 提交
git commit -m "Add new feature"

# 推送到 GitHub
git push

📌 克隆下来的仓库自动配置好了远程仓库关联,所以不需要再执行 git remote add。直接用 git push 即可。


七、场景三:本地已有 Git 仓库,关联新的远程仓库

可能你本地已经是一个 Git 仓库(已有提交历史),想要推送到一个新创建的 GitHub 仓库。

# 检查是否已有远程仓库关联
git remote -v

# 如果已有 origin,可以先删除旧关联
git remote remove origin

# 添加新的远程仓库
git remote add origin git@github.com:username/new-repo.git

# 推送(如果本地分支名不是 main,请替换)
git push -u origin main

八、日常开发工作流

8.1 标准提交流程

这是你每天写代码时最常用的一套命令:

# 1. 查看当前状态(哪些文件改了、哪些在暂存区)
git status

# 2. 查看具体改了什么内容
git diff

# 3. 将所有修改加入暂存区
git add .

# 4. 提交到本地仓库(附上有意义的注释)
git commit -m "feat: 添加用户登录功能"

# 5. 推送到 GitHub
git push

8.2 查看状态与历史

# 查看当前仓库状态
git status

# 查看提交历史(简洁版)
git log --oneline

# 查看提交历史(图形化分支)
git log --oneline --graph --all

# 查看某次提交的详细内容
git show <commit-hash>

# 查看某个文件的修改历史
git log --oneline -- path/to/file

8.3 分支管理基础

# 查看所有分支
git branch -a

# 创建新分支
git branch feature-login

# 切换到新分支
git checkout feature-login

# 创建并切换到新分支(一步到位)
git checkout -b feature-login

# 在 feature 分支上开发并推送
git add .
git commit -m "feat: 完成登录功能"
git push -u origin feature-login

# 切回 main 分支
git checkout main

# 合并 feature 分支到 main
git merge feature-login

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

# 删除远程分支
git push origin --delete feature-login

九、常见错误与解决方案

9.1 fatal: not a git repository

fatal: not a git repository (or any of the parent directories): .git

原因: 当前目录不是一个 Git 仓库(没有 .git 文件夹)。

解决:

# 方式一:初始化
git init

# 方式二:检查是否在正确的目录
pwd
ls -la  # 看有没有 .git 文件夹

9.2 fatal: remote origin already exists

fatal: remote origin already exists.

原因: 已经有一个名为 origin 的远程仓库关联。

解决:

# 查看现有远程仓库
git remote -v

# 方式一:直接修改 origin 的地址
git remote set-url origin git@github.com:username/new-repo.git

# 方式二:删除旧的,添加新的
git remote remove origin
git remote add origin git@github.com:username/new-repo.git

9.3 error: failed to push some refs(远程有本地没有的提交)

 ! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'git@github.com:username/repo.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally.

原因: 远程仓库有你本地没有的提交(比如你在 GitHub 网页上直接编辑了文件,或者别人推送了代码)。

解决:

# 先拉取远程更新并合并
git pull origin main

# 如果有冲突,解决冲突后:
git add .
git commit -m "fix: 解决合并冲突"
git push

9.4 Permission denied (publickey)

Permission denied (publickey).
fatal: Could not read from remote repository.

原因: SSH 密钥配置有问题。

排查步骤:

# 1. 检查是否有 SSH 密钥
ls -la ~/.ssh/

# 2. 测试 SSH 连接
ssh -vT git@github.com

# 3. 确保 ssh-agent 在运行并已添加密钥
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

# 4. 确认公钥已添加到 GitHub
cat ~/.ssh/id_ed25519.pub
# 复制输出,到 GitHub Settings → SSH Keys 确认已添加

9.5 403 或 401 认证失败(HTTPS)

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/...
fatal: Authentication failed for 'https://github.com/...'

原因: GitHub 不再支持密码登录,需要用 Personal Access Token。

解决:

# 方式一:改用 SSH(推荐)
git remote set-url origin git@github.com:username/repo.git

# 方式二:使用 Token 代替密码
# 先按 3.2.2 节创建 Token,push 时密码栏粘贴 Token

9.6 不小心提交了大文件 / 敏感文件

# 1. 从 Git 跟踪中移除文件(但保留本地文件)
git rm --cached 文件名

# 2. 提交移除操作
git commit -m "chore: 移除不应跟踪的文件"

# 3. 添加到 .gitignore
echo "文件名" >> .gitignore

# 4. 提交 .gitignore 更新
git add .gitignore
git commit -m "chore: 更新 .gitignore"

# 5. 推送
git push

如果需要彻底从历史中清除敏感文件(如不小心提交了密码):

# 使用 git filter-branch 或 BFG Repo-Cleaner(高级操作,谨慎使用)
# 简单情况:如果是最近一次提交,可以修改提交
git rm --cached 敏感文件
git commit --amend -m "新的提交信息(已移除敏感文件)"
git push --force-with-lease

⚠️ 一旦敏感信息被推送到公开仓库,请立即视为已泄露! 轮换所有密钥、密码。仅从 Git 历史删除是不够的,可能已被他人克隆。


9.7 推送时提示输入用户名密码但没有弹出提示

如果使用 HTTPS 方式推送时卡住或无法交互输入:

# 在仓库 URL 中直接嵌入用户名,这样只会提示输入密码/Token
git remote set-url origin https://你的用户名@github.com/你的用户名/仓库名.git

# 或者直接嵌入 Token(注意安全)
git remote set-url origin https://你的用户名:你的Token@github.com/你的用户名/仓库名.git

十、Git Commit 规范

好的提交信息让项目历史一目了然。推荐使用 Conventional Commits(约定式提交) 规范:

<type>: <subject>

[optional body]

[optional footer]

常用 type:

Type 含义 示例
feat 新功能 feat: 添加用户注册功能
fix 修复 Bug fix: 修复登录时密码为空导致的崩溃
docs 文档修改 docs: 更新 README 安装说明
style 代码格式(不影响功能) style: 统一缩进为 2 空格
refactor 重构(既非新功能也非修 Bug) refactor: 提取公共验证逻辑
perf 性能优化 perf: 优化图片加载速度
test 测试相关 test: 添加登录模块单元测试
chore 构建/工具变更 chore: 更新依赖版本
ci CI/CD 相关 ci: 添加 GitHub Actions 自动部署

示例:

feat: 添加用户登录功能

- 实现邮箱+密码登录
- 集成 JWT token 认证
- 添加登录失败次数限制

Closes #42

十一、全套终端指令流程(可直接复制使用)

⚠️ 使用前请将以下占位符替换为你的真实信息:

  • Your Name → 你的名字
  • your-email@example.com → 你的 GitHub 注册邮箱
  • your-username → 你的 GitHub 用户名
  • your-repo-name → 你的仓库名

11.1 全新工程首次上传(SSH 方式,推荐)

# ============================================
# 步骤 0:一次性环境配置(仅首次需要,以后永远不用再做)
# ============================================

# 0.1 安装 Git(Ubuntu/Debian)
sudo apt update && sudo apt install git -y

# 0.2 配置用户信息
git config --global user.name "Your Name"
git config --global user.email "your-email@example.com"
git config --global init.defaultBranch main

# 0.3 生成 SSH 密钥(如果已有则跳过)
ssh-keygen -t ed25519 -C "your-email@example.com"
# 提示时全部回车即可(不设密码)

# 0.4 查看公钥并复制
cat ~/.ssh/id_ed25519.pub
# 复制输出的整行内容

# 0.5 将公钥添加到 GitHub
# 打开 https://github.com/settings/keys → New SSH Key → 粘贴 → Add SSH Key

# 0.6 测试连接
ssh -T git@github.com
# 看到 "Hi xxx! You've successfully authenticated" 即成功


# ============================================
# 步骤 1:准备本地项目
# ============================================

# 1.1 进入你的项目目录
cd /path/to/your/project

# 1.2 初始化 Git 仓库
git init

# 1.3 创建 .gitignore(根据需要调整内容)
cat > .gitignore << 'EOF'
# Python
__pycache__/
*.py[cod]
venv/
.env
.vscode/
.idea/
.DS_Store
*.log
*.mp4
*.zip
EOF

# 1.4 查看当前状态
git status


# ============================================
# 步骤 2:在 GitHub 网页上创建远程仓库
# ============================================

# 打开浏览器 → https://github.com/new
# Repository name: your-repo-name
# 选择 Public 或 Private
# ⚠️ 不要勾选 README、.gitignore、License
# 点击 "Create repository"


# ============================================
# 步骤 3:关联远程仓库并推送
# ============================================

# 3.1 添加远程仓库
git remote add origin git@github.com:your-username/your-repo-name.git

# 3.2 验证关联
git remote -v

# 3.3 暂存所有文件
git add .

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

# 3.5 推送到 GitHub(首次使用 -u 建立追踪)
git push -u origin main

# ============================================
# 🎉 完成!刷新 GitHub 页面查看你的代码
# ============================================

11.2 全新工程首次上传(HTTPS + Token 方式)

# ============================================
# 步骤 0:创建 Personal Access Token
# ============================================

# 打开浏览器 → GitHub → Settings → Developer settings
# → Personal access tokens → Tokens (classic) → Generate new token (classic)
# Note: my-linux-laptop
# Expiration: 90 days
# 勾选: repo, workflow
# 点击 Generate token → 立即复制保存!


# ============================================
# 步骤 1:配置 Git 用户信息
# ============================================

git config --global user.name "Your Name"
git config --global user.email "your-email@example.com"
git config --global init.defaultBranch main

# 可选:缓存凭证
git config --global credential.helper cache


# ============================================
# 步骤 2:准备并推送项目
# ============================================

cd /path/to/your/project

git init

cat > .gitignore << 'EOF'
__pycache__/
*.py[cod]
venv/
.env
.vscode/
.idea/
.DS_Store
*.log
EOF

git add .
git commit -m "Initial commit"

# 关联远程仓库(HTTPS 地址)
git remote add origin https://github.com/your-username/your-repo-name.git

# 推送(会提示输入用户名和密码)
# 用户名:你的 GitHub 用户名
# 密码:粘贴刚才创建的 Personal Access Token(不是 GitHub 登录密码!)
git push -u origin main

# ============================================
# 🎉 完成!
# ============================================

11.3 已有仓库日常更新推送

# ============================================
# 日常开发循环(每天使用)
# ============================================

# 1. 开始工作前,拉取最新代码(多人协作时很重要)
git pull

# 2. 写代码...修改文件...

# 3. 查看改了哪些文件
git status

# 4. 查看具体改动内容
git diff

# 5. 添加所有改动到暂存区
git add .

# 6. 提交(使用规范化的提交信息)
git commit -m "feat: 添加某某功能"

# 7. 推送到 GitHub
git push

# ============================================
# 其他常用命令速查
# ============================================

# 查看提交历史
git log --oneline --graph --all

# 撤销工作区的修改(未 add 的)
git restore 文件名

# 撤销暂存区的文件(已 add 但未 commit 的)
git restore --staged 文件名

# 修改最近一次提交的信息
git commit --amend -m "新的提交信息"

# 创建并切换到新分支
git checkout -b feature-xxx

# 切换回 main 分支
git checkout main

# 查看所有分支
git branch -a

# 合并分支
git merge feature-xxx

# 删除本地分支
git branch -d feature-xxx

# 查看远程仓库地址
git remote -v

📝 最后总结:
一旦完成了 11.1 节中"步骤 0"的一次性环境配置,以后上传任何新项目只需要:

  1. git init
  2. 写代码
  3. git add .
  4. git commit -m "..."
  5. 在 GitHub 创建仓库
  6. git remote add origin ...
  7. git push -u origin main

七步搞定,熟练后 2 分钟就能完成!


文档生成日期:2026年7月

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐