GitHub 仓库 Git 命令完整指南
By Mige - 八月 23, 2026
GitHub 仓库 Git 命令完整指南
按使用场景分类,每个命令都附有真实范例和通俗解释。
一、首次设置(只需做一次)
1. 配置用户名和邮箱
git config --global user.name "你的名字"
git config --global user.email "your@email.com"
解释:告诉 Git 你是谁,每次提交都会记录这些信息。 --global 表示全局生效,这台电脑的所有仓库都用这个配置。
2. 查看配置
git config --list
解释:列出所有 Git 配置,检查是否设置正确。
二、创建/获取仓库
3. 初始化新仓库
# 在项目目录中执行
cd my-project
git init
解释:在当前目录创建一个 .git 隐藏文件夹,把这个目录变成 Git 仓库。刚开始是空的,没有任何文件被跟踪。
4. 克隆远程仓库
git clone https://github.com/用户名/仓库名.git# 或者指定目录名
git clone https://github.com/用户名/仓库名.git my-folder解释:把 GitHub 上的整个仓库下载到本地。会自动创建文件夹、初始化 Git、添加远程地址,一步到位。
三、日常开发流程(最常用)
5. 查看状态
git status
解释:查看当前工作区的状态——哪些文件改了、哪些还没提交、当前在哪个分支。这是最常用的命令,建议随时执行。
6. 添加文件到暂存区
# 添加单个文件
git add index.php
# 添加所有改动的文件
git add .
# 交互式添加(只添加部分改动)
git add -p
解释:把文件从"工作区"放到"暂存区",相当于告诉 Git "我要提交这些文件"。 git add . 最常用,但注意它会添加所有文件(包括不想提交的),建议配合 .gitignore 使用。
7. 提交到本地仓库
git commit -m "feat: 添加用户登录功能"
解释:把暂存区的文件真正保存到 Git 历史中。 -m 后面是提交信息,一定要写清楚改了啥,方便日后回溯。
8. 推送到 GitHub
# 第一次推送(同时设置上游分支)
git push -u origin main
# 之后的推送
git push
解释:把本地的提交上传到 GitHub 远程仓库。 -u 是第一次推送时建立本地分支和远程分支的关联,之后只用 git push 就行。
9. 拉取远程更新
git pull
解释:从 GitHub 下载最新的代码并自动合并到当前分支。每次开始写代码前先执行一次,避免冲突。
10. 拉取但不自动合并
git fetch
解释:只下载远程的最新代码,但不自动合并。你可以先看看别人改了啥,再决定怎么合并。
四、分支操作
11. 查看分支
# 查看本地分支
git branch
# 查看所有分支(包括远程)
git branch -a
解释:列出所有分支,当前所在分支前面有个 * 号。
12. 创建并切换分支
# 创建新分支
git branch feature/login
# 切换到该分支
git checkout feature/login
# 或者一步到位(推荐)
git checkout -b feature/login
解释: -b 表示创建并立即切换。开发新功能时,永远从主分支切出一个新分支来写。
13. 切换分支
git checkout main
# 或者新版命令
git switch main
解释:切换到 main 分支。 switch 是 Git 2.23 之后的新命令,专门用于切换分支,语义更清晰。
14. 合并分支
# 先切换到目标分支(比如 main)
git checkout main
# 把 feature/login 分支合并进来
git merge feature/login
解释:把另一个分支的代码合并到当前分支。先切到 main ,再把 feature/login 合进来。
15. 删除分支
# 删除本地分支
git branch -d feature/login
# 强制删除(未合并的分支)
git branch -D feature/login
# 删除远程分支
git push origin --delete feature/login
解释:功能开发完并合并后,清理不需要的分支。
五、PR 相关操作
16. 推送分支到远程(为 PR 做准备)
git push origin feature/login
解释:把你的功能分支推送到 GitHub,然后在 GitHub 网页上点击 "New Pull Request" 发起 PR。
17. 保持分支与主分支同步
# 方法一:合并(推荐新手)
git checkout feature/login
git merge main
# 方法二:变基(提交历史更干净)
git checkout feature/login
git rebase main
解释:你的分支开发了一段时间,主分支可能已经有新提交了。在发起 PR 之前,先把主分支的最新代码合并到你的分支,解决可能的冲突。
18. 压缩提交(PR 审查前整理历史)
# 压缩最近 3 个提交为 1 个
git rebase -i HEAD~3
解释:开发过程中可能有很多"改一下""再改一下"的琐碎提交,PR 之前把它们压缩成一个清晰的提交。执行后会打开编辑器,把 pick 改成 squash 即可。
六、解决冲突
19. 查看冲突文件
git status
解释:合并时如果有冲突, git status 会列出所有冲突文件。
20. 解决冲突后继续合并
# 手动编辑冲突文件后git add 解决完的文件
git commit
解释:Git 会在冲突文件中标记 <<<<<<< 和 >>>>>>> ,手动编辑保留正确代码,然后 add + commit 完成合并。
七、撤销操作
21. 撤销工作区的修改
# 撤销单个文件
git checkout -- index.php
# 新版命令
git restore index.php
解释:文件还没 add ,想放弃修改回到上次提交的状态。谨慎使用,修改会丢失。
22. 撤销暂存区的文件
# 把文件从暂存区移回工作区
git reset HEAD index.php
# 新版命令
git restore --staged index.php
解释:不小心 git add 了不想提交的文件,把它从暂存区撤回来,文件内容不变。
23. 撤销最近一次提交
# 撤销提交,保留修改在工作区
git reset --soft HEAD~1
# 撤销提交,连修改一起丢弃
git reset --hard HEAD~1
解释: --soft 是"撤销提交但保留代码改动", --hard 是"彻底回到上一个版本"。 --hard 很危险,会丢失代码。
24. 推错了想撤回(谨慎使用)
# 本地回退后强制推送
git reset --hard HEAD~1
git push origin main --force
解释:如果已经 push 到 GitHub 了才发现提交有误,先本地回退再强制推送。注意:如果别人已经拉了你的代码,不要用 --force ,改用 --force-with-lease 。
八、查看历史
25. 查看提交日志
# 简洁版
git log --oneline
# 图形化
git log --oneline --graph --all
# 查看某个文件的修改历史
git log -p index.php
解释: --oneline 每行显示一个提交, --graph 用 ASCII 图形显示分支关系。
26. 查看某次提交的改动
git show 提交ID
解释:查看某次提交具体改了哪些文件、哪些代码。
27. 查看文件的改动```bash
查看未暂存的改动
git diff
查看已暂存的改动
git diff --cached
**解释**:`git diff` 显示你改了但还没 `add` 的内容,`git diff --cached` 显示已经 `add` 了的内容。
---
## 九、标签管理
### 28. 创建标签
```bash
# 轻量标签
git tag v1.0.0
# 附注标签(推荐)
git tag -a v1.0.0 -m "正式版 v1.0.0 发布"
解释:给某个提交打上标签,通常用于版本发布。
29. 推送标签到 GitHub
git push origin v1.0.0
# 或者推送所有标签
git push --tags
解释:标签默认不会随 git push 推送,需要单独推送。
十、.gitignore 文件
30. 创建 .gitignore
# 在项目根目录创建 .gitignore 文件
touch .gitignore
解释:告诉 Git 哪些文件不要跟踪。常见的忽略内容:
# PHP 项目示例
vendor/
.env
*.log
.DS_Store
node_modules/
dist/
*.local
十一、完整工作流示例
# 1. 克隆项目
git clone https://github.com/xxx/forum.gitcd forum
# 2. 创建功能分支
git checkout -b feature/login
# 3. 写代码... 然后提交
git add .
git commit -m "feat: 添加登录页面"
# 4. 继续写... 再次提交
git add .
git commit -m "feat: 实现登录逻辑"
# 5. 推送分支到 GitHub
git push origin feature/login
# 6. 在 GitHub 上发起 PR
# 7. PR 审查通过后,在 GitHub 上合并
# 8. 切回主分支并拉取最新代码
git checkout main
git pull
# 9. 删除本地分支
git branch -d feature/login
十二、常用命令速查表| 操作 | 命令 | 频率 |
| 查看状态 | git status | ⭐⭐⭐⭐⭐ |
| 添加文件 | git add . | ⭐⭐⭐⭐⭐ |
| 提交 | git commit -m "信息" | ⭐⭐⭐⭐⭐ |
| 推送 | git push | ⭐⭐⭐⭐ |
| 拉取 | git pull | ⭐⭐⭐⭐ |
| 创建分支 | git checkout -b 分支名 | ⭐⭐⭐ |
| 切换分支 | git checkout 分支名 | ⭐⭐⭐ |
| 合并分支 | git merge 分支名 | ⭐⭐⭐ |
| 查看日志 | git log --oneline | ⭐⭐⭐ |
| 查看差异 | git diff | ⭐⭐ |
| 撤销修改 | git restore 文件名 | ⭐⭐ |
| 克隆仓库 | git clone 地址 | ⭐ |
一句话总结
日常开发记住5 个命令就够了:
git pull # 拉取最新代码
git checkout -b xxx # 创建分支
git add . # 添加改动
git commit -m "xxx" # 提交
git push # 推送到 GitHub
其他命令遇到具体问题时再查即可,不用一次性全记住。
按使用场景分类,每个命令都附有真实范例和通俗解释。
一、首次设置(只需做一次)
1. 配置用户名和邮箱
git config --global user.name "你的名字"
git config --global user.email "your@email.com"
解释:告诉 Git 你是谁,每次提交都会记录这些信息。 --global 表示全局生效,这台电脑的所有仓库都用这个配置。
2. 查看配置
git config --list
解释:列出所有 Git 配置,检查是否设置正确。
二、创建/获取仓库
3. 初始化新仓库
# 在项目目录中执行
cd my-project
git init
解释:在当前目录创建一个 .git 隐藏文件夹,把这个目录变成 Git 仓库。刚开始是空的,没有任何文件被跟踪。
4. 克隆远程仓库
git clone https://github.com/用户名/仓库名.git# 或者指定目录名
git clone https://github.com/用户名/仓库名.git my-folder解释:把 GitHub 上的整个仓库下载到本地。会自动创建文件夹、初始化 Git、添加远程地址,一步到位。
三、日常开发流程(最常用)
5. 查看状态
git status
解释:查看当前工作区的状态——哪些文件改了、哪些还没提交、当前在哪个分支。这是最常用的命令,建议随时执行。
6. 添加文件到暂存区
# 添加单个文件
git add index.php
# 添加所有改动的文件
git add .
# 交互式添加(只添加部分改动)
git add -p
解释:把文件从"工作区"放到"暂存区",相当于告诉 Git "我要提交这些文件"。 git add . 最常用,但注意它会添加所有文件(包括不想提交的),建议配合 .gitignore 使用。
7. 提交到本地仓库
git commit -m "feat: 添加用户登录功能"
解释:把暂存区的文件真正保存到 Git 历史中。 -m 后面是提交信息,一定要写清楚改了啥,方便日后回溯。
8. 推送到 GitHub
# 第一次推送(同时设置上游分支)
git push -u origin main
# 之后的推送
git push
解释:把本地的提交上传到 GitHub 远程仓库。 -u 是第一次推送时建立本地分支和远程分支的关联,之后只用 git push 就行。
9. 拉取远程更新
git pull
解释:从 GitHub 下载最新的代码并自动合并到当前分支。每次开始写代码前先执行一次,避免冲突。
10. 拉取但不自动合并
git fetch
解释:只下载远程的最新代码,但不自动合并。你可以先看看别人改了啥,再决定怎么合并。
四、分支操作
11. 查看分支
# 查看本地分支
git branch
# 查看所有分支(包括远程)
git branch -a
解释:列出所有分支,当前所在分支前面有个 * 号。
12. 创建并切换分支
# 创建新分支
git branch feature/login
# 切换到该分支
git checkout feature/login
# 或者一步到位(推荐)
git checkout -b feature/login
解释: -b 表示创建并立即切换。开发新功能时,永远从主分支切出一个新分支来写。
13. 切换分支
git checkout main
# 或者新版命令
git switch main
解释:切换到 main 分支。 switch 是 Git 2.23 之后的新命令,专门用于切换分支,语义更清晰。
14. 合并分支
# 先切换到目标分支(比如 main)
git checkout main
# 把 feature/login 分支合并进来
git merge feature/login
解释:把另一个分支的代码合并到当前分支。先切到 main ,再把 feature/login 合进来。
15. 删除分支
# 删除本地分支
git branch -d feature/login
# 强制删除(未合并的分支)
git branch -D feature/login
# 删除远程分支
git push origin --delete feature/login
解释:功能开发完并合并后,清理不需要的分支。
五、PR 相关操作
16. 推送分支到远程(为 PR 做准备)
git push origin feature/login
解释:把你的功能分支推送到 GitHub,然后在 GitHub 网页上点击 "New Pull Request" 发起 PR。
17. 保持分支与主分支同步
# 方法一:合并(推荐新手)
git checkout feature/login
git merge main
# 方法二:变基(提交历史更干净)
git checkout feature/login
git rebase main
解释:你的分支开发了一段时间,主分支可能已经有新提交了。在发起 PR 之前,先把主分支的最新代码合并到你的分支,解决可能的冲突。
18. 压缩提交(PR 审查前整理历史)
# 压缩最近 3 个提交为 1 个
git rebase -i HEAD~3
解释:开发过程中可能有很多"改一下""再改一下"的琐碎提交,PR 之前把它们压缩成一个清晰的提交。执行后会打开编辑器,把 pick 改成 squash 即可。
六、解决冲突
19. 查看冲突文件
git status
解释:合并时如果有冲突, git status 会列出所有冲突文件。
20. 解决冲突后继续合并
# 手动编辑冲突文件后git add 解决完的文件
git commit
解释:Git 会在冲突文件中标记 <<<<<<< 和 >>>>>>> ,手动编辑保留正确代码,然后 add + commit 完成合并。
七、撤销操作
21. 撤销工作区的修改
# 撤销单个文件
git checkout -- index.php
# 新版命令
git restore index.php
解释:文件还没 add ,想放弃修改回到上次提交的状态。谨慎使用,修改会丢失。
22. 撤销暂存区的文件
# 把文件从暂存区移回工作区
git reset HEAD index.php
# 新版命令
git restore --staged index.php
解释:不小心 git add 了不想提交的文件,把它从暂存区撤回来,文件内容不变。
23. 撤销最近一次提交
# 撤销提交,保留修改在工作区
git reset --soft HEAD~1
# 撤销提交,连修改一起丢弃
git reset --hard HEAD~1
解释: --soft 是"撤销提交但保留代码改动", --hard 是"彻底回到上一个版本"。 --hard 很危险,会丢失代码。
24. 推错了想撤回(谨慎使用)
# 本地回退后强制推送
git reset --hard HEAD~1
git push origin main --force
解释:如果已经 push 到 GitHub 了才发现提交有误,先本地回退再强制推送。注意:如果别人已经拉了你的代码,不要用 --force ,改用 --force-with-lease 。
八、查看历史
25. 查看提交日志
# 简洁版
git log --oneline
# 图形化
git log --oneline --graph --all
# 查看某个文件的修改历史
git log -p index.php
解释: --oneline 每行显示一个提交, --graph 用 ASCII 图形显示分支关系。
26. 查看某次提交的改动
git show 提交ID
解释:查看某次提交具体改了哪些文件、哪些代码。
27. 查看文件的改动```bash
查看未暂存的改动
git diff
查看已暂存的改动
git diff --cached
**解释**:`git diff` 显示你改了但还没 `add` 的内容,`git diff --cached` 显示已经 `add` 了的内容。
---
## 九、标签管理
### 28. 创建标签
```bash
# 轻量标签
git tag v1.0.0
# 附注标签(推荐)
git tag -a v1.0.0 -m "正式版 v1.0.0 发布"
解释:给某个提交打上标签,通常用于版本发布。
29. 推送标签到 GitHub
git push origin v1.0.0
# 或者推送所有标签
git push --tags
解释:标签默认不会随 git push 推送,需要单独推送。
十、.gitignore 文件
30. 创建 .gitignore
# 在项目根目录创建 .gitignore 文件
touch .gitignore
解释:告诉 Git 哪些文件不要跟踪。常见的忽略内容:
# PHP 项目示例
vendor/
.env
*.log
.DS_Store
node_modules/
dist/
*.local
十一、完整工作流示例
# 1. 克隆项目
git clone https://github.com/xxx/forum.gitcd forum
# 2. 创建功能分支
git checkout -b feature/login
# 3. 写代码... 然后提交
git add .
git commit -m "feat: 添加登录页面"
# 4. 继续写... 再次提交
git add .
git commit -m "feat: 实现登录逻辑"
# 5. 推送分支到 GitHub
git push origin feature/login
# 6. 在 GitHub 上发起 PR
# 7. PR 审查通过后,在 GitHub 上合并
# 8. 切回主分支并拉取最新代码
git checkout main
git pull
# 9. 删除本地分支
git branch -d feature/login
十二、常用命令速查表| 操作 | 命令 | 频率 |
| 查看状态 | git status | ⭐⭐⭐⭐⭐ |
| 添加文件 | git add . | ⭐⭐⭐⭐⭐ |
| 提交 | git commit -m "信息" | ⭐⭐⭐⭐⭐ |
| 推送 | git push | ⭐⭐⭐⭐ |
| 拉取 | git pull | ⭐⭐⭐⭐ |
| 创建分支 | git checkout -b 分支名 | ⭐⭐⭐ |
| 切换分支 | git checkout 分支名 | ⭐⭐⭐ |
| 合并分支 | git merge 分支名 | ⭐⭐⭐ |
| 查看日志 | git log --oneline | ⭐⭐⭐ |
| 查看差异 | git diff | ⭐⭐ |
| 撤销修改 | git restore 文件名 | ⭐⭐ |
| 克隆仓库 | git clone 地址 | ⭐ |
一句话总结
日常开发记住5 个命令就够了:
git pull # 拉取最新代码
git checkout -b xxx # 创建分支
git add . # 添加改动
git commit -m "xxx" # 提交
git push # 推送到 GitHub
其他命令遇到具体问题时再查即可,不用一次性全记住。

0 comments