查看全局配置

1
2
3
4
5
6
7
8
# 配置全局用户名
git config --global user.name "你的用户名"

# 配置全局邮箱
git config --global user.email "你的邮箱地址"

# 查看当前全局配置
git config --list

配置 SSH 密钥连接 GitHub

使用 SSH 连接可以免去每次推送代码时输入密码的麻烦。

生成本地 SSH 密钥对

1
ssh-keygen -t ed25519 -C "your_email@example.com"

按三下回车(保持默认路径、不设置密钥密码)即可生成。

查看并复制公钥内容

1
2
3
4
5
# macOS / Linux 查看命令
cat ~/.ssh/id_ed25519.pub

# Windows (Git Bash) 查看命令
cat ~/.ssh/id_ed25519.pub

复制输出的全部内容(以 ssh-ed25519 开头,你的邮箱结尾)。

将公钥添加到 GitHub

  • 登录 GitHub -> 点击右上角头像 -> Settings
  • 左侧菜单选择 SSH and GPG keys
  • 点击右上角 New SSH key
  • Title 随意填写(如 “Macbook Pro”),Key 粘贴刚刚复制的内容,点击 Add SSH key

测试 SSH 连接是否成功

1
ssh -T git@github.com

如果提示 Are you sure you want to continue connecting (yes/no/[fingerprint])?,输入 yes 并回车。看到 Hi [你的用户名]! You've successfully authenticated... 即表示连接成功。


创建与初始化仓库

克隆现有的远程仓库

1
2
3
4
5
# 使用 SSH 地址克隆(推荐)
git clone 远程仓库的SSH地址

# 使用 HTTPS 地址克隆
git clone 远程仓库的HTTPS地址

本地项目文件夹关联远程仓库

1
2
3
4
5
6
7
8
9
10
11
# 进入项目目录后执行,将其初始化为 Git 仓库
git init

# 将本地仓库与远程 GitHub 仓库进行关联
git remote add origin 远程仓库的SSH地址

# 查看当前关联的远程仓库地址及权限
git remote -v

# 修改已有的远程仓库地址
git remote set-url origin 新的仓库地址(SSH)

origin 是远程仓库地址(例如: git@github.com:username/my-awesome-project.git)的一个“代号”或“别名”

日常开发:暂存与提交

查看当前仓库状态

1
2
# 查看有哪些文件被修改了、哪些是未跟踪的新文件
git status

添加到暂存区 (Staging Area)

1
2
3
4
5
# 添加指定文件到暂存区
git add filename.py

# 添加当前目录下的所有修改及新文件到暂存区(最常用)
git add .

提交到本地仓库 (Repository)

1
2
3
4
5
6
7
8
9
10
11
# 将暂存区的内容提交,并记录本次提交的说明信息
git commit -m "填写本次修改的日志信息(如:修复登录Bug)"

# 跳过暂存区直接提交(仅适用于对已跟踪文件的修改,不包含新文件)
git commit -am "修改日志"

# 首次推送新分支:建立本地分支与远程分支的关联,并推送
git push -u origin 分支名

# 之后非首次推送:在已建立关联的分支上,直接推送即可
git push

拉取与更新 (Pull / Fetch)

1
2
3
4
5
6
7
8
# 获取远程仓库的最新更新信息,但暂不合并到本地代码
git fetch origin

# 拉取远程指定分支的最新代码,并自动与本地当前分支合并(最常用)
git pull origin 分支名

# 如果已经建立了追踪关系,直接输入 pull 即可(可以通过 git branch -vv 查看本地分支与远程分支的追踪/对应关系)
git pull

查看提交日志

1
2
3
4
5
6
7
8
# 查看详细的历史提交记录
git log

# 以单行精简模式查看历史记录
git log --oneline

# 查看分支演进图
git log --oneline --graph --all

分支管理 (Branching)

分支是 Git 的核心利器,支持多人协同开发而互不干扰。

查看分支

1
2
3
4
5
6
7
8
# 查看所有本地分支(当前所在分支前面会有 * 号并高亮)
git branch

# 查看所有本地分支和远程分支
git branch -a

# 查看本地分支与远程分支的追踪/对应关系
git branch -vv

新建分支

1
2
3
4
5
# 仅仅创建新分支,但仍停留在当前分支
git branch 新分支名

# 创建并切换到该新分支
git switch -c 新分支名

建立分支关系

1
2
3
4
5
# 切换到你的新分支
git switch dev

# 第一次推送并建立追踪关系
git push -u origin dev

切换分支

1
2
# 切换到已有的分支
git switch 分支名

合并分支 (Merge)

1
2
3
4
5
# 1. 先切换到你想要合并进去的目标分支
git switch main

# 2. 将指定分支的修改合并到当前 main 分支
git merge 被合并的分支名

删除分支

1
2
3
4
5
6
7
8
# 删除一个已经合并过的本地分支
git branch -d 分支名

# 强制删除一个还未合并的本地分支
git branch -D 分支名

# 删除远程仓库中的指定分支
git push origin --delete 远程分支名

撤销与版本回滚

注意:涉及 --hard 的回滚操作会抹除未提交的工作,请务必谨慎使用。

撤销工作区的修改(未执行 git add)

1
2
# 丢弃某个文件在工作区的所有未暂存修改
git restore filename.py

撤销暂存区的修改(已执行 git add,但未 git commit)

1
2
# 将文件从暂存区撤回到工作区(保留修改内容)
git restore --staged filename.py

修改最后一次提交(未推送到远程)

1
2
# 发现刚提交的 commit 注释写错了,或者漏掉了某个文件
git commit --amend -m "新的正确提交信息"

版本回退 (Reset)

1
2
3
4
5
6
7
8
# 【软回退】回退到指定版本,保留你写的所有代码修改,修改内容会停留在暂存区
git reset --soft 提交的CommitID

# 【硬回退】彻底回退到指定版本!本地工作区没保存的代码、新写的代码会全部消失!
git reset --hard 提交的CommitID

# 回退到上一个版本
git reset --hard HEAD^