目录
- [Git 命令参考手册](#Git 命令参考手册)
-
- [1. 创建仓库](#1. 创建仓库)
-
- [1.1 创建一个新的本地仓库](#1.1 创建一个新的本地仓库)
- [1.2 克隆一个仓库](#1.2 克隆一个仓库)
- [1.3 克隆仓库到指定目录](#1.3 克隆仓库到指定目录)
- [2. 提交更改](#2. 提交更改)
-
- [2.1 显示工作目录中已修改的文件,准备提交](#2.1 显示工作目录中已修改的文件,准备提交)
- [2.2 将文件添加到暂存区,准备提交](#2.2 将文件添加到暂存区,准备提交)
- [2.3 将所有已修改的文件添加到暂存区,准备提交](#2.3 将所有已修改的文件添加到暂存区,准备提交)
- [2.4 提交暂存区的所有文件到版本历史](#2.4 提交暂存区的所有文件到版本历史)
- [2.5 提交所有已跟踪的文件到版本历史](#2.5 提交所有已跟踪的文件到版本历史)
- [2.6 放弃在工作目录中但未暂存的更改](#2.6 放弃在工作目录中但未暂存的更改)
- [2.7 取消暂存已暂存的文件](#2.7 取消暂存已暂存的文件)
- [2.8 取消暂存文件并保留更改](#2.8 取消暂存文件并保留更改)
- [2.9 恢复到上次提交的状态](#2.9 恢复到上次提交的状态)
- [2.10 查看未暂存的更改](#2.10 查看未暂存的更改)
- [2.11 查看已暂存但未提交的更改](#2.11 查看已暂存但未提交的更改)
- [2.12 将当前分支的提交应用到指定的分支](#2.12 将当前分支的提交应用到指定的分支)
- [3. 配置](#3. 配置)
-
- [3.1 设置用户名](#3.1 设置用户名)
- [3.2 设置邮箱](#3.2 设置邮箱)
- [3.3 启用 Git 输出的颜色](#3.3 启用 Git 输出的颜色)
- [3.4 编辑全局配置文件](#3.4 编辑全局配置文件)
- [4. 工作分支](#4. 工作分支)
-
- [4.1 列出本地分支](#4.1 列出本地分支)
- [4.2 列出所有分支(包括远程)](#4.2 列出所有分支(包括远程))
- [4.3 切换到某个分支](#4.3 切换到某个分支)
- [4.4 创建并切换到一个新分支](#4.4 创建并切换到一个新分支)
- [4.5 删除分支](#4.5 删除分支)
- [4.6 合并分支](#4.6 合并分支)
-
- [4.6.1 将 branchA 合并到 branchB](#4.6.1 将 branchA 合并到 branchB)
- [4.7 为当前提交打标签](#4.7 为当前提交打标签)
- [5. 查看仓库状态](#5. 查看仓库状态)
-
- [5.1 查看提交历史](#5.1 查看提交历史)
- [5.2 查看分支A上有而分支B上没有的提交](#5.2 查看分支A上有而分支B上没有的提交)
- [5.3 查看文件的提交历史(包括重命名)](#5.3 查看文件的提交历史(包括重命名))
- [5.4 查看两个分支的差异](#5.4 查看两个分支的差异)
- [5.5 查看 Git 对象的详细信息](#5.5 查看 Git 对象的详细信息)
- [6. 同步](#6. 同步)
-
- [6.1 从远程拉取所有分支](#6.1 从远程拉取所有分支)
- [6.2 合并远程分支到当前分支](#6.2 合并远程分支到当前分支)
- [6.3 推送本地分支到远程仓库](#6.3 推送本地分支到远程仓库)
- [6.4 拉取并合并远程仓库的最新提交](#6.4 拉取并合并远程仓库的最新提交)
- [6.5 从另一个分支合并指定的提交](#6.5 从另一个分支合并指定的提交)
- [7. 远程操作](#7. 远程操作)
-
- [7.1 添加远程仓库](#7.1 添加远程仓库)
- [7.2 查看所有已配置的远程仓库](#7.2 查看所有已配置的远程仓库)
- [7.3 查看远程仓库的 URL](#7.3 查看远程仓库的 URL)
- [7.4 删除远程仓库](#7.4 删除远程仓库)
- [7.5 修改远程仓库的 URL](#7.5 修改远程仓库的 URL)
- [8. 临时提交](#8. 临时提交)
-
- [8.1 保存已修改且已暂存的更改](#8.1 保存已修改且已暂存的更改)
- [8.2 查看存储的更改列表](#8.2 查看存储的更改列表)
- [8.3 恢复最新的暂存更改](#8.3 恢复最新的暂存更改)
- [8.4 删除最新的暂存更改](#8.4 删除最新的暂存更改)
- [9. 跟踪文件路径变动](#9. 跟踪文件路径变动)
-
- [9.1 删除项目中的文件并准备提交删除](#9.1 删除项目中的文件并准备提交删除)
- [9.2 更改文件路径并准备提交变动](#9.2 更改文件路径并准备提交变动)
- [9.3 显示包含路径变动的提交日志](#9.3 显示包含路径变动的提交日志)
- [10. 忽略文件](#10. 忽略文件)
- [11. 重命名分支](#11. 重命名分支)
-
-
- [11.1 重命名当前分支](#11.1 重命名当前分支)
- [11.2 推送并重设远程分支](#11.2 推送并重设远程分支)
- [11.3 删除远程分支](#11.3 删除远程分支)
-
- [12. 查找变动](#12. 查找变动)
-
- [12.1 按内容搜索变动](#12.1 按内容搜索变动)
- [12.2 查看某个文件的变动历史](#12.2 查看某个文件的变动历史)
- [12.3 使用可视化图形查看提交历史](#12.3 使用可视化图形查看提交历史)
- [13. 分支管理](#13. 分支管理)
-
- [13.1 查看所有分支及其上游分支](#13.1 查看所有分支及其上游分支)
- [13.2 快速切换到上一个分支](#13.2 快速切换到上一个分支)
- [13.3 只查看远程分支](#13.3 只查看远程分支)
- [13.4 从其他分支检出单个文件](#13.4 从其他分支检出单个文件)
- [14. 重写历史](#14. 重写历史)
-
- [14.1 重写最后一次提交的提交信息](#14.1 重写最后一次提交的提交信息)
- [14.2 修改最新的提交,保持提交信息不变](#14.2 修改最新的提交,保持提交信息不变)
- [14.3 修改提交信息并更新时间戳](#14.3 修改提交信息并更新时间戳)
- [14.4 重写多个提交的历史(交互式 rebase)](#14.4 重写多个提交的历史(交互式 rebase))
- [14.5 交互式 rebase 合并提交](#14.5 交互式 rebase 合并提交)
- [14.6 强制推送更改到远程仓库](#14.6 强制推送更改到远程仓库)
- [15. 检查 Git 配置](#15. 检查 Git 配置)
- [16. 删除未跟踪的文件和目录](#16. 删除未跟踪的文件和目录)
- [17. 创建一个新的空的 Git 仓库](#17. 创建一个新的空的 Git 仓库)
- [18. 显示文件内容的 Git 哈希值](#18. 显示文件内容的 Git 哈希值)
- [19. 使用简洁输出查看提交日志](#19. 使用简洁输出查看提交日志)
- [20. 与 GitHub 配合使用](#20. 与 GitHub 配合使用)
-
- [20.1 添加 SSH 密钥到 GitHub](#20.1 添加 SSH 密钥到 GitHub)
- [20.2 使用 SSH 协议克隆仓库](#20.2 使用 SSH 协议克隆仓库)
- [20.3 使用 HTTPS 协议克隆仓库](#20.3 使用 HTTPS 协议克隆仓库)
- [20.4 推送到 GitHub](#20.4 推送到 GitHub)
- [21. 解决冲突](#21. 解决冲突)
-
- [21.1 查看冲突文件](#21.1 查看冲突文件)
- [21.2 编辑冲突文件并手动解决冲突](#21.2 编辑冲突文件并手动解决冲突)
- [21.3 完成合并并提交](#21.3 完成合并并提交)
- [21.4 放弃合并并返回到合并之前的状态](#21.4 放弃合并并返回到合并之前的状态)
- [22. Git 的别名功能](#22. Git 的别名功能)
-
- [22.1 创建常用命令的别名](#22.1 创建常用命令的别名)
- [22.2 查看所有已设置的 Git 别名](#22.2 查看所有已设置的 Git 别名)
- [22.3 删除 Git 别名](#22.3 删除 Git 别名)
- [23. 使用 Git hooks](#23. 使用 Git hooks)
-
- [23.1 查看和配置 Git hooks](#23.1 查看和配置 Git hooks)
- [23.2 启用钩子](#23.2 启用钩子)
- [24. 多人协作中的最佳实践](#24. 多人协作中的最佳实践)
-
- [24.1 经常拉取远程仓库的更改](#24.1 经常拉取远程仓库的更改)
- [24.2 使用分支进行功能开发](#24.2 使用分支进行功能开发)
- [24.3 合并分支时使用 `--no-ff` 防止丢失历史](#24.3 合并分支时使用
--no-ff
防止丢失历史) - [24.4 在开发过程中定期提交](#24.4 在开发过程中定期提交)
- [24.5 在合并时解决冲突](#24.5 在合并时解决冲突)
- [25. Git Submodule](#25. Git Submodule)
-
- [25.1 添加子模块](#25.1 添加子模块)
- [25.2 初始化和更新子模块](#25.2 初始化和更新子模块)
- [25.3 更新子模块](#25.3 更新子模块)
- [25.4 删除子模块](#25.4 删除子模块)
- [26. Git LFS(大文件存储)](#26. Git LFS(大文件存储))
-
- [26.1 安装 Git LFS](#26.1 安装 Git LFS)
- [26.2 跟踪大文件类型](#26.2 跟踪大文件类型)
- [26.3 提交大文件](#26.3 提交大文件)
- [27. Git 性能优化](#27. Git 性能优化)
-
- [27.1 清理仓库历史](#27.1 清理仓库历史)
- [27.2 删除不需要的分支](#27.2 删除不需要的分支)
-
- [27.2.1 删除本地分支](#27.2.1 删除本地分支)
- [27.2.2 删除远程分支](#27.2.2 删除远程分支)
- [28. 结束语](#28. 结束语)
- 相关文章:
Git 命令参考手册
1. 创建仓库
1.1 创建一个新的本地仓库
shell
$ git init [项目名]
1.2 克隆一个仓库
shell
$ git clone git_url
1.3 克隆仓库到指定目录
shell
$ git clone git_url my_directory
2. 提交更改
2.1 显示工作目录中已修改的文件,准备提交
shell
$ git status
2.2 将文件添加到暂存区,准备提交
shell
$ git add [文件名]
2.3 将所有已修改的文件添加到暂存区,准备提交
shell
$ git add .
2.4 提交暂存区的所有文件到版本历史
shell
$ git commit -m "提交信息"
2.5 提交所有已跟踪的文件到版本历史
shell
$ git commit -am "提交信息"
2.6 放弃在工作目录中但未暂存的更改
shell
$ git restore [文件名]
2.7 取消暂存已暂存的文件
shell
$ git restore --staged [文件名]
2.8 取消暂存文件并保留更改
shell
$ git reset [文件名]
2.9 恢复到上次提交的状态
shell
$ git reset --hard
2.10 查看未暂存的更改
shell
$ git diff
2.11 查看已暂存但未提交的更改
shell
$ git diff --staged
2.12 将当前分支的提交应用到指定的分支
shell
$ git rebase [分支]
3. 配置
3.1 设置用户名
shell
$ git config --global user.name "用户名"
3.2 设置邮箱
shell
$ git config --global user.email "邮箱"
3.3 启用 Git 输出的颜色
shell
$ git config --global color.ui auto
3.4 编辑全局配置文件
shell
$ git config --global --edit
4. 工作分支
4.1 列出本地分支
shell
$ git branch
4.2 列出所有分支(包括远程)
shell
$ git branch -av
4.3 切换到某个分支
shell
$ git checkout my_branch
4.4 创建并切换到一个新分支
shell
$ git checkout -b new_branch
4.5 删除分支
shell
$ git branch -d my_branch
4.6 合并分支
4.6.1 将 branchA 合并到 branchB
shell
$ git checkout branchB
$ git merge branchA
4.7 为当前提交打标签
shell
$ git tag my_tag
5. 查看仓库状态
5.1 查看提交历史
shell
$ git log
5.2 查看分支A上有而分支B上没有的提交
shell
$ git log branchB..branchA
5.3 查看文件的提交历史(包括重命名)
shell
$ git log --follow [文件名]
5.4 查看两个分支的差异
shell
$ git diff branchB...branchA
5.5 查看 Git 对象的详细信息
shell
$ git show [SHA]
6. 同步
6.1 从远程拉取所有分支
shell
$ git fetch [别名]
6.2 合并远程分支到当前分支
shell
$ git merge [别名]/[分支]
# 不使用快进
$ git merge --no-ff [别名]/[分支]
# 仅使用快进
$ git merge --ff-only [别名]/[分支]
6.3 推送本地分支到远程仓库
shell
$ git push [别名] [分支]
6.4 拉取并合并远程仓库的最新提交
shell
$ git pull
6.5 从另一个分支合并指定的提交
shell
$ git cherry-pick [提交ID]
7. 远程操作
7.1 添加远程仓库
shell
$ git remote add [别名] [远程仓库URL]
7.2 查看所有已配置的远程仓库
shell
$ git remote
7.3 查看远程仓库的 URL
shell
$ git remote -v
7.4 删除远程仓库
shell
$ git remote rm [远程仓库名]
7.5 修改远程仓库的 URL
shell
$ git remote set-url origin [git_url]
8. 临时提交
8.1 保存已修改且已暂存的更改
shell
$ git stash
8.2 查看存储的更改列表
shell
$ git stash list
8.3 恢复最新的暂存更改
shell
$ git stash pop
8.4 删除最新的暂存更改
shell
$ git stash drop
9. 跟踪文件路径变动
9.1 删除项目中的文件并准备提交删除
shell
$ git rm [文件名]
9.2 更改文件路径并准备提交变动
shell
$ git mv [原路径] [新路径]
9.3 显示包含路径变动的提交日志
shell
$ git log --stat -M
10. 忽略文件
在 .gitignore
文件中,指定不需要 Git 跟踪的文件
shell
/logs/*
# "!" 表示不忽略
!logs/.gitkeep
# 忽略 Mac 系统文件
.DS_store
# 忽略 node_modules 文件夹
node_modules
# 忽略 SASS 配置文件
.sass-cache
11. 重命名分支
11.1 重命名当前分支
shell
$ git branch -m <新名称>
11.2 推送并重设远程分支
shell
$ git push origin -u <新名称>
11.3 删除远程分支
shell
$ git push origin --delete <旧名称>
12. 查找变动
12.1 按内容搜索变动
shell
$ git log -S'<源代码中的某个术语>'
12.2 查看某个文件的变动历史
shell
$ git log -p <文件名>
12.3 使用可视化图形查看提交历史
shell
$ git log --pretty=oneline --graph --decorate --all
13. 分支管理
13.1 查看所有分支及其上游分支
shell
$ git branch -vv
13.2 快速切换到上一个分支
shell
$ git checkout -
13.3 只查看远程分支
shell
$ git branch -r
13.4 从其他分支检出单个文件
shell
$ git checkout <分支> -- <文件名>
14. 重写历史
14.1 重写最后一次提交的提交信息
shell
$ git commit --amend -m "提交信息"
14.2 修改最新的提交,保持提交信息不变
shell
$ git commit --amend --no-edit
14.3 修改提交信息并更新时间戳
shell
$ git commit --amend --no-edit --date="now"
14.4 重写多个提交的历史(交互式 rebase)
shell
$ git rebase -i HEAD~N # N是要修改的提交数量
14.5 交互式 rebase 合并提交
在交互式 rebase 的编辑界面,使用 squash
或 fixup
合并提交。
shell
pick e3a1b35 提交1
squash f98f27e 提交2
14.6 强制推送更改到远程仓库
shell
$ git push --force
15. 检查 Git 配置
shell
$ git config --list
16. 删除未跟踪的文件和目录
shell
$ git clean -fd
17. 创建一个新的空的 Git 仓库
shell
$ git init --bare
18. 显示文件内容的 Git 哈希值
shell
$ git hash-object [文件名]
19. 使用简洁输出查看提交日志
shell
$ git log --oneline
20. 与 GitHub 配合使用
20.1 添加 SSH 密钥到 GitHub
首先生成 SSH 密钥:
shell
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
然后将公钥添加到 GitHub 的 SSH 设置中。
20.2 使用 SSH 协议克隆仓库
shell
$ git clone git@github.com:username/repository.git
20.3 使用 HTTPS 协议克隆仓库
shell
$ git clone https://github.com/username/repository.git
20.4 推送到 GitHub
shell
$ git push origin main
21. 解决冲突
21.1 查看冲突文件
shell
$ git status
21.2 编辑冲突文件并手动解决冲突
冲突标记如下:
shell
<<<<<<< HEAD
代码块A
=======
代码块B
>>>>>>> branch-name
手动编辑并解决冲突后,使用 git add
将文件添加到暂存区。
21.3 完成合并并提交
shell
$ git commit
21.4 放弃合并并返回到合并之前的状态
shell
$ git merge --abort
22. Git 的别名功能
22.1 创建常用命令的别名
shell
$ git config --global alias.st status
$ git config --global alias.ci commit
$ git config --global alias.co checkout
这样,你就可以使用 git st
来代替 git status
,git ci
来代替 git commit
,以此类推。
22.2 查看所有已设置的 Git 别名
shell
$ git config --get-regexp ^alias
22.3 删除 Git 别名
shell
$ git config --global --unset alias.st
23. 使用 Git hooks
23.1 查看和配置 Git hooks
Git 支持多种钩子(hook),如在提交前检查代码或在推送之前进行某些操作。这些钩子位于 .git/hooks
目录中。你可以编辑这些文件来定制 Git 的行为。
shell
$ cd .git/hooks
$ ls
23.2 启用钩子
例如,启用一个 pre-commit
钩子,可以创建一个 pre-commit
文件并加上脚本内容。Git 会在每次提交前运行该脚本。
24. 多人协作中的最佳实践
24.1 经常拉取远程仓库的更改
shell
$ git pull origin main
24.2 使用分支进行功能开发
在开始新功能时,应该为每个新功能创建一个新的分支:
shell
$ git checkout -b feature/new-feature
24.3 合并分支时使用 --no-ff
防止丢失历史
使用 --no-ff
选项来强制 Git 创建一个新的合并提交,保留分支合并的历史。
shell
$ git merge --no-ff feature/new-feature
24.4 在开发过程中定期提交
确保在开发过程中,适时地提交更改。每个提交应该是功能完整的,并且具有清晰的提交信息。
24.5 在合并时解决冲突
如果多个开发者修改了相同的代码段,合并时可能会出现冲突。此时需要手动解决冲突,确保代码正确性。
25. Git Submodule
25.1 添加子模块
shell
$ git submodule add [repository_url] [路径]
25.2 初始化和更新子模块
shell
$ git submodule update --init
25.3 更新子模块
shell
$ git submodule update --remote
25.4 删除子模块
shell
$ git submodule deinit [路径]
$ git rm [路径]
$ rm -rf .gitmodules
26. Git LFS(大文件存储)
26.1 安装 Git LFS
shell
$ git lfs install
26.2 跟踪大文件类型
shell
$ git lfs track "*.psd"
26.3 提交大文件
shell
$ git add .gitattributes
$ git add <大文件>
$ git commit -m "Add large file"
27. Git 性能优化
27.1 清理仓库历史
shell
$ git gc --aggressive
27.2 删除不需要的分支
删除本地和远程不再使用的分支,以保持仓库的整洁和性能。
27.2.1 删除本地分支
shell
$ git branch -d <分支名>
27.2.2 删除远程分支
shell
$ git push origin --delete <分支名>
以上为 Git 命令参考手册的扩展部分,包含了从基础操作到高级功能的全面讲解。您可以根据需要查阅和使用相应的命令和技巧。
28. 结束语
- 本节内容已经全部介绍完毕,希望通过这篇文章,大家对
Git
有了更深入的理解和认识。- 感谢各位的阅读和支持,如果觉得这篇文章对你有帮助,请不要吝惜你的点赞和评论 ,这对我们非常重要。再次感谢大家的关注和支持 !点我关注❤️