Git 工作流程图及Git 命令速查表
Git 工作流程图解:
git clone
┌──────────────────────────┐
│ Remote Repository │ ←──────────────┐
│ (e.g. GitHub) │ │
└────────────┬─────────────┘ │
│ │
git pull │ git push
│ │
┌────────────▼─────────────┐ ┌───────┴──────────────┐
│ Local Repository │◄───────┤ Remote Changes │
│ (git commit 保存) │ └─────────────────────┘
└────────────┬─────────────┘
│
git commit
│
┌────────────▼─────────────┐
│ Staging Area (Index) │ ←─── git add
└────────────┬─────────────┘
│
Modified/Tracked Files
▲
┌───────┴────────┐
│ Working Dir. │
│ (本地工作目录) │
└────────────────┘
完整数据流:
典型工作流程示例:
Git 初始化与配置
命令 | 作用 |
---|---|
git init |
初始化本地仓库 |
git config --global user.name "你的名字" |
设置用户名 |
git config --global user.email "你的邮箱" |
设置邮箱 |
git config --global core.editor vim |
设置默认编辑器 |
git config --list |
查看当前 Git 配置 |
- 创建一个版本库:
- 选择一个合适的地方,创建一个空目录:
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
- 通过
git init
命令把这个目录变成Git可以管理的仓库(版本库又名仓库-Repository)。
git init
Initialized empty Git repository in /Users/michael/learngit/.git/
- 执行完毕后,当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用
ls -ah
命令就可以看见
- 注意git config命令的
--global
参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
基本工作流程
命令 | 作用 |
---|---|
git status |
查看状态 |
git add <文件> |
添加到暂存区 |
git add . |
添加所有修改 |
git commit -m "说明" |
提交到本地仓库 |
git log |
查看提交历史 |
git diff |
查看修改内容 |
git add file1.txt
git add file2.txt file3.txt
git commit -m "add 3 files."
Q:输入git add readme.txt,得到错误:fatal: not a git repository (or any of the
parent directories)。 A:Git命令必须在Git仓库目录内执行(git init除外),在仓库目录外执行是没有意义的。
Q:输入git add readme.txt,得到错误fatal: pathspec ‘readme.txt’ did not match
any files。
A:添加某个文件时,该文件必须在当前目录下存在,用ls或者dir命令查看当前目录的文件,看看文件是否存在,或者是否写错了文件名。
分支操作
命令 | 作用 |
---|---|
git branch |
查看所有本地分支 |
git branch <名称> |
创建分支 |
git checkout <分支> |
切换分支 |
git checkout -b <名称> |
创建并切换新分支 |
git merge <分支> |
合并分支到当前分支 |
git branch -d <名称> |
删除分支 |
远程仓库
命令 | 作用 |
---|---|
git remote -v |
查看远程仓库地址 |
git remote add origin <地址> |
添加远程仓库 |
git push -u origin master |
第一次推送 |
git push |
推送本地提交 |
git pull |
拉取远程更新 |
git clone <地址> |
克隆远程仓库 |
其他常用命令
命令 | 作用 |
---|---|
git reset --hard <版本号> |
回退到指定版本 |
git stash |
暂存当前修改 |
git stash pop |
还原暂存的修改 |
git tag <标签名> |
打标签 |
git show <标签名> |
查看标签信息 |
远程仓库
1.自行注册GitHub账号
2.生成新的 SSH 密钥(所有系统通用)
本地Git仓库和GitHub仓库之间的传输是通过SSH加密的;GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议;
GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
- 打开终端(Windows 使用 Git Bash 或 PowerShell)
- 执行密钥生成命令(推荐使用更安全的 Ed25519 算法)
ssh-keygen -t rsa -C "youremail@example.com"
ssh-keygen -t ed25519 -C "your_email@example.com"
- 出现提示时按回车使用默认路径(~/.ssh/id_ed25519)
- 可以设置密码(推荐)或直接回车留空
在用户主目录下,将有.ssh目录,这个目录下有id_rsa和id_rsa.pub这两个文件。
- 验证生成结果
ls ~/.ssh # 应该看到 id_ed25519(私钥)和 id_ed25519.pub(公钥)
3.各系统复制公钥的方法
macOS
pbcopy < ~/.ssh/id_ed25519.pub # 自动复制到剪贴板
Linux(需要安装 xclip)
sudo apt install xclip # Ubuntu/Debian
xclip -sel clip < ~/.ssh/id_ed25519.pub
Windows(Git Bash)
cat ~/.ssh/id_ed25519.pub | clip
Windows(PowerShell)
type $env:USERPROFILE\.ssh\id_ed25519.pub | clip
4.GitHub 添加密钥步骤
- 登录 GitHub → 点击右上角头像 → Settings
- 左侧菜单选择 SSH and GPG keys
- 点击 New SSH key 按钮
- 填写信息:
Title:标识密钥用途(如 “My MacBook Pro”)
Key type:保持默认 Authentication Key
Key:粘贴剪贴板中的公钥内容(以 ssh-ed25519 开头) - 点击 Add SSH key 完成
5.测试 SSH 连接
ssh -T git@github.com
正常应该返回:Hi username! You’ve successfully authenticated…
6.多密钥管理(适用于多设备)
- 创建配置文件
touch ~/.ssh/config
chmod 600 ~/.ssh/config
- 编辑配置(示例)
# 默认账号
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519
# 公司账号
Host github-company
HostName github.com
User git
IdentityFile ~/.ssh/company_key
- 使用时替换地址
git clone git@github-company:company/project.git