git与github从零到融会贯通:你的最后一本github使用指南
git与github从零到融会贯通:你的最后一本github使用指南
目录
- 一、前置知识
- 二、环境准备
- 三、认证方式详解(SSH vs HTTPS)
- 四、.gitignore 文件详解
- 五、场景一:从零开始创建并上传全新工程(最常用)
- 六、场景二:已有 GitHub 仓库,克隆到本地开发后推送
- 七、场景三:本地已有 Git 仓库,关联新的远程仓库
- 八、日常开发工作流
- 九、常见错误与解决方案
- 十、Git Commit 规范
- 十一、全套终端指令流程(可直接复制使用)
一、前置知识
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
- 访问 https://git-scm.com/download/win
- 下载安装包,双击运行
- 安装过程中一路默认即可(推荐勾选"Git Bash Here",这会提供一个类 Linux 终端)
- 安装完成后,右键菜单会出现 “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 账号
- 访问 https://github.com
- 点击右上角 Sign up
- 输入邮箱、密码、用户名
- 完成验证码验证
- 查收验证邮件,点击链接激活账号
📌 免费账号已足够个人使用:无限公共/私有仓库、无限协作者、每月 2000 分钟 Actions 额度。
三、认证方式详解(SSH vs HTTPS)
当你执行 git push 或 git 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 步骤
- 登录 GitHub → 点击右上角头像 → Settings
- 左侧菜单最底部 → Developer settings
- 左侧菜单 → Personal access tokens → Tokens (classic)
- 点击 Generate new token → Generate new token (classic)
- 填写 Note(备注,随便写,如 “my-linux-laptop”)
- 选择过期时间(Expiration),建议选 90 天或自定义
- 勾选权限(至少勾选以下):
- ✅
repo(完整的仓库读写权限) - ✅
workflow(如果需要 GitHub Actions)
- ✅
- 点击页面最底部 Generate token
- ⚠️ 立即复制保存这个 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_rsa 和 id_rsa.pub 或 id_ed25519 和 id_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
- 登录 GitHub → 右上角头像 → Settings
- 左侧菜单 → SSH and GPG keys
- 点击绿色按钮 New SSH key
- Title:随便填,例如 “My Linux Laptop”
- Key type:选择 Authentication Key
- Key:粘贴刚才复制的公钥
- 点击 Add SSH key
- 输入 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 重建 |
.env、config.local.json |
包含密码、API 密钥等敏感信息 |
*.log、*.tmp |
临时文件、日志文件没有版本管理价值 |
dist/、build/ |
编译产物,可从源码重新生成 |
.DS_Store、Thumbs.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 add或git 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 上创建远程仓库
- 登录 GitHub
- 点击右上角 “+” 号 → New repository
- 填写仓库信息:
- Repository name:仓库名(如
my-project) - Description:描述(可选)
- Public / Private:选择公开或私有
- ⚠️ 不要勾选 “Add a README file”
- ⚠️ 不要勾选 “Add .gitignore”
- ⚠️ 不要勾选 “Choose a license”
- Repository name:仓库名(如
- 点击 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"的一次性环境配置,以后上传任何新项目只需要:
git init- 写代码
git add .git commit -m "..."- 在 GitHub 创建仓库
git remote add origin ...git push -u origin main七步搞定,熟练后 2 分钟就能完成!
文档生成日期:2026年7月
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)