【Git】Git 命令参考手册

目录

  • [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 的编辑界面,使用 squashfixup 合并提交。

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 statusgit 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. 结束语

  1. 本节内容已经全部介绍完毕,希望通过这篇文章,大家对 Git 有了更深入的理解和认识。
  2. 感谢各位的阅读和支持,如果觉得这篇文章对你有帮助,请不要吝惜你的点赞和评论 ,这对我们非常重要。再次感谢大家的关注和支持点我关注❤️

相关文章:

相关推荐
sulikey1 小时前
从零配置一个规范的 Python Git 仓库(适用于 Gitee / GitHub)
git·python·pycharm·gitee·github
whysqwhw1 小时前
KuiklyUI声明式组件体系的实现分析
github
whysqwhw1 小时前
ComposeView 的上下游继承关系及相关类/接口分析
github
逛逛GitHub3 小时前
登上 GitHub 热榜!一口气调用多个 AI 大模型开源神器。
github
21号 13 小时前
4.客户端(Redis)
开发语言·数据库·github
学渣676563 小时前
【面向小白】git rebase全面总结,什么时候用rebase
git
梦想CAD控件4 小时前
网页CAD中组(Group)功能的二次开发
前端·javascript·github
米诺zuo5 小时前
不同的项目仓库配置不同的github账号
github
小龙报5 小时前
《算法每日一题(1)--- 第31场蓝桥算法挑战赛》
c语言·开发语言·c++·git·算法·学习方法
修炼室5 小时前
如何在GitHub上查看自己提过的Issues
github