【Git】Git 命令参考手册

news2025/1/13 16:57:12

LuckiBit

目录

  • Git 命令参考手册
    • 1. 创建仓库
      • 1.1 创建一个新的本地仓库
      • 1.2 克隆一个仓库
      • 1.3 克隆仓库到指定目录
    • 2. 提交更改
      • 2.1 显示工作目录中已修改的文件,准备提交
      • 2.2 将文件添加到暂存区,准备提交
      • 2.3 将所有已修改的文件添加到暂存区,准备提交
      • 2.4 提交暂存区的所有文件到版本历史
      • 2.5 提交所有已跟踪的文件到版本历史
      • 2.6 放弃在工作目录中但未暂存的更改
      • 2.7 取消暂存已暂存的文件
      • 2.8 取消暂存文件并保留更改
      • 2.9 恢复到上次提交的状态
      • 2.10 查看未暂存的更改
      • 2.11 查看已暂存但未提交的更改
      • 2.12 将当前分支的提交应用到指定的分支
    • 3. 配置
      • 3.1 设置用户名
      • 3.2 设置邮箱
      • 3.3 启用 Git 输出的颜色
      • 3.4 编辑全局配置文件
    • 4. 工作分支
      • 4.1 列出本地分支
      • 4.2 列出所有分支(包括远程)
      • 4.3 切换到某个分支
      • 4.4 创建并切换到一个新分支
      • 4.5 删除分支
      • 4.6 合并分支
        • 4.6.1 将 branchA 合并到 branchB
      • 4.7 为当前提交打标签
    • 5. 查看仓库状态
      • 5.1 查看提交历史
      • 5.2 查看分支A上有而分支B上没有的提交
      • 5.3 查看文件的提交历史(包括重命名)
      • 5.4 查看两个分支的差异
      • 5.5 查看 Git 对象的详细信息
    • 6. 同步
      • 6.1 从远程拉取所有分支
      • 6.2 合并远程分支到当前分支
      • 6.3 推送本地分支到远程仓库
      • 6.4 拉取并合并远程仓库的最新提交
      • 6.5 从另一个分支合并指定的提交
    • 7. 远程操作
      • 7.1 添加远程仓库
      • 7.2 查看所有已配置的远程仓库
      • 7.3 查看远程仓库的 URL
      • 7.4 删除远程仓库
      • 7.5 修改远程仓库的 URL
    • 8. 临时提交
      • 8.1 保存已修改且已暂存的更改
      • 8.2 查看存储的更改列表
      • 8.3 恢复最新的暂存更改
      • 8.4 删除最新的暂存更改
    • 9. 跟踪文件路径变动
      • 9.1 删除项目中的文件并准备提交删除
      • 9.2 更改文件路径并准备提交变动
      • 9.3 显示包含路径变动的提交日志
    • 10. 忽略文件
    • 11. 重命名分支
        • 11.1 重命名当前分支
        • 11.2 推送并重设远程分支
        • 11.3 删除远程分支
    • 12. 查找变动
      • 12.1 按内容搜索变动
      • 12.2 查看某个文件的变动历史
      • 12.3 使用可视化图形查看提交历史
    • 13. 分支管理
      • 13.1 查看所有分支及其上游分支
      • 13.2 快速切换到上一个分支
      • 13.3 只查看远程分支
      • 13.4 从其他分支检出单个文件
    • 14. 重写历史
      • 14.1 重写最后一次提交的提交信息
      • 14.2 修改最新的提交,保持提交信息不变
      • 14.3 修改提交信息并更新时间戳
      • 14.4 重写多个提交的历史(交互式 rebase)
      • 14.5 交互式 rebase 合并提交
      • 14.6 强制推送更改到远程仓库
    • 15. 检查 Git 配置
    • 16. 删除未跟踪的文件和目录
    • 17. 创建一个新的空的 Git 仓库
    • 18. 显示文件内容的 Git 哈希值
    • 19. 使用简洁输出查看提交日志
    • 20. 与 GitHub 配合使用
      • 20.1 添加 SSH 密钥到 GitHub
      • 20.2 使用 SSH 协议克隆仓库
      • 20.3 使用 HTTPS 协议克隆仓库
      • 20.4 推送到 GitHub
    • 21. 解决冲突
      • 21.1 查看冲突文件
      • 21.2 编辑冲突文件并手动解决冲突
      • 21.3 完成合并并提交
      • 21.4 放弃合并并返回到合并之前的状态
    • 22. Git 的别名功能
      • 22.1 创建常用命令的别名
      • 22.2 查看所有已设置的 Git 别名
      • 22.3 删除 Git 别名
    • 23. 使用 Git hooks
      • 23.1 查看和配置 Git hooks
      • 23.2 启用钩子
    • 24. 多人协作中的最佳实践
      • 24.1 经常拉取远程仓库的更改
      • 24.2 使用分支进行功能开发
      • 24.3 合并分支时使用 `--no-ff` 防止丢失历史
      • 24.4 在开发过程中定期提交
      • 24.5 在合并时解决冲突
    • 25. Git Submodule
      • 25.1 添加子模块
      • 25.2 初始化和更新子模块
      • 25.3 更新子模块
      • 25.4 删除子模块
    • 26. Git LFS(大文件存储)
      • 26.1 安装 Git LFS
      • 26.2 跟踪大文件类型
      • 26.3 提交大文件
    • 27. Git 性能优化
      • 27.1 清理仓库历史
      • 27.2 删除不需要的分支
        • 27.2.1 删除本地分支
        • 27.2.2 删除远程分支
    • 28. 结束语
    • 相关文章:

Git 命令参考手册

1. 创建仓库

1.1 创建一个新的本地仓库

$ git init [项目名]

1.2 克隆一个仓库

$ git clone git_url

1.3 克隆仓库到指定目录

$ git clone git_url my_directory

2. 提交更改

2.1 显示工作目录中已修改的文件,准备提交

$ git status

2.2 将文件添加到暂存区,准备提交

$ git add [文件名]

2.3 将所有已修改的文件添加到暂存区,准备提交

$ git add .

2.4 提交暂存区的所有文件到版本历史

$ git commit -m "提交信息"

2.5 提交所有已跟踪的文件到版本历史

$ git commit -am "提交信息"

2.6 放弃在工作目录中但未暂存的更改

$ git restore [文件名]

2.7 取消暂存已暂存的文件

$ git restore --staged [文件名]

2.8 取消暂存文件并保留更改

$ git reset [文件名]

2.9 恢复到上次提交的状态

$ git reset --hard

2.10 查看未暂存的更改

$ git diff

2.11 查看已暂存但未提交的更改

$ git diff --staged

2.12 将当前分支的提交应用到指定的分支

$ git rebase [分支]

3. 配置

3.1 设置用户名

$ git config --global user.name "用户名"

3.2 设置邮箱

$ git config --global user.email "邮箱"

3.3 启用 Git 输出的颜色

$ git config --global color.ui auto

3.4 编辑全局配置文件

$ git config --global --edit

4. 工作分支

4.1 列出本地分支

$ git branch

4.2 列出所有分支(包括远程)

$ git branch -av

4.3 切换到某个分支

$ git checkout my_branch

4.4 创建并切换到一个新分支

$ git checkout -b new_branch

4.5 删除分支

$ git branch -d my_branch

4.6 合并分支

4.6.1 将 branchA 合并到 branchB
$ git checkout branchB
$ git merge branchA

4.7 为当前提交打标签

$ git tag my_tag

5. 查看仓库状态

5.1 查看提交历史

$ git log

5.2 查看分支A上有而分支B上没有的提交

$ git log branchB..branchA

5.3 查看文件的提交历史(包括重命名)

$ git log --follow [文件名]

5.4 查看两个分支的差异

$ git diff branchB...branchA

5.5 查看 Git 对象的详细信息

$ git show [SHA]

6. 同步

6.1 从远程拉取所有分支

$ git fetch [别名]

6.2 合并远程分支到当前分支

$ git merge [别名]/[分支]
# 不使用快进
$ git merge --no-ff [别名]/[分支]
# 仅使用快进
$ git merge --ff-only [别名]/[分支]

6.3 推送本地分支到远程仓库

$ git push [别名] [分支]

6.4 拉取并合并远程仓库的最新提交

$ git pull

6.5 从另一个分支合并指定的提交

$ git cherry-pick [提交ID]

7. 远程操作

7.1 添加远程仓库

$ git remote add [别名] [远程仓库URL]

7.2 查看所有已配置的远程仓库

$ git remote

7.3 查看远程仓库的 URL

$ git remote -v

7.4 删除远程仓库

$ git remote rm [远程仓库名]

7.5 修改远程仓库的 URL

$ git remote set-url origin [git_url]

8. 临时提交

8.1 保存已修改且已暂存的更改

$ git stash

8.2 查看存储的更改列表

$ git stash list

8.3 恢复最新的暂存更改

$ git stash pop

8.4 删除最新的暂存更改

$ git stash drop

9. 跟踪文件路径变动

9.1 删除项目中的文件并准备提交删除

$ git rm [文件名]

9.2 更改文件路径并准备提交变动

$ git mv [原路径] [新路径]

9.3 显示包含路径变动的提交日志

$ git log --stat -M

10. 忽略文件

.gitignore 文件中,指定不需要 Git 跟踪的文件

/logs/*

# "!" 表示不忽略
!logs/.gitkeep

# 忽略 Mac 系统文件
.DS_store

# 忽略 node_modules 文件夹
node_modules

# 忽略 SASS 配置文件
.sass-cache

11. 重命名分支

11.1 重命名当前分支
$ git branch -m <新名称>
11.2 推送并重设远程分支
$ git push origin -u <新名称>
11.3 删除远程分支
$ git push origin --delete <旧名称>

12. 查找变动

12.1 按内容搜索变动

$ git log -S'<源代码中的某个术语>'

12.2 查看某个文件的变动历史

$ git log -p <文件名>

12.3 使用可视化图形查看提交历史

$ git log --pretty=oneline --graph --decorate --all

13. 分支管理

13.1 查看所有分支及其上游分支

$ git branch -vv

13.2 快速切换到上一个分支

$ git checkout -

13.3 只查看远程分支

$ git branch -r

13.4 从其他分支检出单个文件

$ git checkout <分支> -- <文件名>

14. 重写历史

14.1 重写最后一次提交的提交信息

$ git commit --amend -m "提交信息"

14.2 修改最新的提交,保持提交信息不变

$ git commit --amend --no-edit

14.3 修改提交信息并更新时间戳

$ git commit --amend --no-edit --date="now"

14.4 重写多个提交的历史(交互式 rebase)

$ git rebase -i HEAD~N  # N是要修改的提交数量

14.5 交互式 rebase 合并提交

在交互式 rebase 的编辑界面,使用 squashfixup 合并提交。

pick e3a1b35 提交1
squash f98f27e 提交2

14.6 强制推送更改到远程仓库

$ git push --force

15. 检查 Git 配置

$ git config --list

16. 删除未跟踪的文件和目录

$ git clean -fd

17. 创建一个新的空的 Git 仓库

$ git init --bare

18. 显示文件内容的 Git 哈希值

$ git hash-object [文件名]

19. 使用简洁输出查看提交日志

$ git log --oneline

20. 与 GitHub 配合使用

20.1 添加 SSH 密钥到 GitHub

首先生成 SSH 密钥:

$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

然后将公钥添加到 GitHub 的 SSH 设置中。

20.2 使用 SSH 协议克隆仓库

$ git clone git@github.com:username/repository.git

20.3 使用 HTTPS 协议克隆仓库

$ git clone https://github.com/username/repository.git

20.4 推送到 GitHub

$ git push origin main

21. 解决冲突

21.1 查看冲突文件

$ git status

21.2 编辑冲突文件并手动解决冲突

冲突标记如下:

<<<<<<< HEAD
代码块A
=======
代码块B
>>>>>>> branch-name

手动编辑并解决冲突后,使用 git add 将文件添加到暂存区。

21.3 完成合并并提交

$ git commit

21.4 放弃合并并返回到合并之前的状态

$ git merge --abort

22. Git 的别名功能

22.1 创建常用命令的别名

$ 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 别名

$ git config --get-regexp ^alias

22.3 删除 Git 别名

$ git config --global --unset alias.st

23. 使用 Git hooks

23.1 查看和配置 Git hooks

Git 支持多种钩子(hook),如在提交前检查代码或在推送之前进行某些操作。这些钩子位于 .git/hooks 目录中。你可以编辑这些文件来定制 Git 的行为。

$ cd .git/hooks
$ ls

23.2 启用钩子

例如,启用一个 pre-commit 钩子,可以创建一个 pre-commit 文件并加上脚本内容。Git 会在每次提交前运行该脚本。

24. 多人协作中的最佳实践

24.1 经常拉取远程仓库的更改

$ git pull origin main

24.2 使用分支进行功能开发

在开始新功能时,应该为每个新功能创建一个新的分支:

$ git checkout -b feature/new-feature

24.3 合并分支时使用 --no-ff 防止丢失历史

使用 --no-ff 选项来强制 Git 创建一个新的合并提交,保留分支合并的历史。

$ git merge --no-ff feature/new-feature

24.4 在开发过程中定期提交

确保在开发过程中,适时地提交更改。每个提交应该是功能完整的,并且具有清晰的提交信息。

24.5 在合并时解决冲突

如果多个开发者修改了相同的代码段,合并时可能会出现冲突。此时需要手动解决冲突,确保代码正确性。

25. Git Submodule

25.1 添加子模块

$ git submodule add [repository_url] [路径]

25.2 初始化和更新子模块

$ git submodule update --init

25.3 更新子模块

$ git submodule update --remote

25.4 删除子模块

$ git submodule deinit [路径]
$ git rm [路径]
$ rm -rf .gitmodules

26. Git LFS(大文件存储)

26.1 安装 Git LFS

$ git lfs install

26.2 跟踪大文件类型

$ git lfs track "*.psd"

26.3 提交大文件

$ git add .gitattributes
$ git add <大文件>
$ git commit -m "Add large file"

27. Git 性能优化

27.1 清理仓库历史

$ git gc --aggressive

27.2 删除不需要的分支

删除本地和远程不再使用的分支,以保持仓库的整洁和性能。

27.2.1 删除本地分支
$ git branch -d <分支名>
27.2.2 删除远程分支
$ git push origin --delete <分支名>

以上为 Git 命令参考手册的扩展部分,包含了从基础操作到高级功能的全面讲解。您可以根据需要查阅和使用相应的命令和技巧。

28. 结束语

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

相关文章:

  • Git 完全指南:从入门到精通

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2249586.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux系列】Chrony时间同步服务器搭建完整指南

1. 简介 Chrony是一个用于Linux系统的高效、精准的时间同步工具&#xff0c;通常用于替代传统的NTP&#xff08;Network Time Protocol&#xff09;服务。Chrony不仅在系统启动时提供快速的时间同步&#xff0c;还能在时钟漂移较大的情况下进行及时调整&#xff0c;因此广泛应…

数据库日志

MySQL中有哪些日志 1&#xff0c;redo log重做日志 redo log是物理机日志&#xff0c;因为它记录的是对数据页的物理修改&#xff0c;而不是SQL语句。 作用是确保事务的持久性&#xff0c;redo log日志记录事务执行后的状态&#xff0c;用来恢复未写入 data file的已提交事务…

【vue for beginner】Vue该怎么学?

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 vue2 和 vue3 Vue2现在正向vue3逐渐更新中&#xff0c;官方vue2已经不再更新。 这个历程和当时的pyt…

【Ubuntu 24.04】How to Install and Use NVM

参考 下载 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash激活 Activate NVM: Once the installation script completes, you need to either close and reopen the terminal or run the following command to use nvm immediately. exp…

SeggisV1.0 遥感影像分割软件【源代码】讲解

在此基础上进行二次开发&#xff0c;开发自己的软件&#xff0c;例如&#xff1a;【1】无人机及个人私有影像识别【2】离线使用【3】变化监测模型集成【4】个人私有分割模型集成等等&#xff0c;不管是您用来个人学习 还是公司研发需求&#xff0c;都相当合适&#xff0c;包您满…

Python轴承故障诊断 (21)基于VMD-CNN-BiTCN的创新诊断模型

往期精彩内容&#xff1a; Python-凯斯西储大学&#xff08;CWRU&#xff09;轴承数据解读与分类处理 Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客 Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客 Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客 三十多个开源…

使用docker搭建hysteria2服务端

源链接&#xff1a;https://github.com/apernet/hysteria/discussions/1248 官网地址&#xff1a;https://v2.hysteria.network/zh/docs/getting-started/Installation/ 首选需要安装docker和docker compose 切换到合适的目录 cd /home创建文件夹 mkdir hysteria创建docke…

基于Java实现的潜艇大战游戏

基于Java实现的潜艇大战游戏 一.需求分析 1.1 设计任务 本次游戏课程设计小组成员团队合作的方式&#xff0c;通过游戏总体分析设计&#xff0c;场景画面的绘制&#xff0c;游戏事件的处理&#xff0c;游戏核心算法的分析实现&#xff0c;游戏的碰撞检测&#xff0c;游戏的反…

课题组自主发展了哪些CMAQ模式预报相关的改进技术?

空气污染问题日益受到各级政府以及社会公众的高度重视&#xff0c;从实时的数据监测公布到空气质量数值预报及预报产品的发布&#xff0c;我国在空气质量监测和预报方面取得了一定进展。随着计算机技术的高速发展、空气污染监测手段的提高和人们对大气物理化学过程认识的深入&a…

深入解析下oracle date底层存储方式

之前我们介绍了varchar2和char的数据库底层存储格式&#xff0c;今天我们介绍下date类型的数据存储格式&#xff0c;并通过测试程序快速获取一个日期。 一、环境搭建 1.1&#xff0c;创建表 我们还是创建一个测试表t_code&#xff0c;并插入数据&#xff1a; 1.2&#xff0c;…

【论文复现】SRGAN

1. 项目结构 如何生成文件夹的文件目录呢? 按住shift键,右击你要生成目录的文件夹,选择“在此处打开Powershell窗口” 在命令窗口里输入命令“tree”,按回车。就会显示出目录结构。 ├─.idea │ └─inspectionProfiles ├─benchmark_results ├─data │ ├─test …

Kubernetes 之 Ingress 和 Service 的异同点

1. 概念与作用 1.1 Ingress Ingress 是什么&#xff1f; Ingress主要负责七层负载&#xff0c;将外部 HTTP/HTTPS 请求路由到集群内部的服务。它可以基于域名和路径定义规则&#xff0c;从而将外部请求分配到不同的服务。 ingress作用 提供 基于 HTTP/HTTPS 的路由。 支持 …

结构体详解+代码展示

系列文章目录 &#x1f388; &#x1f388; 我的CSDN主页:OTWOL的主页&#xff0c;欢迎&#xff01;&#xff01;&#xff01;&#x1f44b;&#x1f3fc;&#x1f44b;&#x1f3fc; &#x1f389;&#x1f389;我的C语言初阶合集&#xff1a;C语言初阶合集&#xff0c;希望能…

Springboot项目搭建(7)

1.概要 2.Layout主页布局 文件地址&#xff1a;src\views\Layout.vue 2.1 script行为模块 从elementUI中选取图标图案。 <script setup> import {Management,Promotion,UserFilled,User,Crop,EditPen,SwitchButton,CaretBottom } from "element-plus/icons-vue…

cocos creator 3.8 俄罗斯方块Demo 10

这里的表格是横行数列&#xff0c;也就是x是行&#xff0c;y是列&#xff0c;不要当x/y轴看。 1-1012-1012-1-1[-1,0]0[0,-1][0,0][0,1][0,2]0[0,0]11[1,0]22[2,0] -1012-1012-1-1[-1,0]0[0,-1][0,0][0,1][0,2]0[0,0]11[1,0]22[2,0] 2-1012-1012-1[-1,-1][-1,0]-1[-1,-1][-1…

Java安全—原生反序列化重写方法链条分析触发类

前言 在Java安全中反序列化是一个非常重要点&#xff0c;有原生态的反序列化&#xff0c;还有一些特定漏洞情况下的。今天主要讲一下原生态的反序列化&#xff0c;这部分内容对于没Java基础的来说可能有点难&#xff0c;包括我。 序列化与反序列化 序列化&#xff1a;将内存…

【Java 学习】面向程序的三大特性:封装、继承、多态

引言 1. 封装1.1 什么是封装呢&#xff1f;1.2 访问限定符1.3 使用封装 2. 继承2.1 为什么要有继承&#xff1f;2.2 继承的概念2.3 继承的语法2.4 访问父类成员2.4.1 子类中访问父类成员的变量2.4.2 访问父类的成员方法 2.5 super关键字2.6 子类的构造方法 3. 多态3.1 多态的概…

LeetCode—74. 搜索二维矩阵(中等)

仅供个人学习使用 题目描述&#xff1a; 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&#xff0c;返回 true…

uniapp关闭sourceMap的生成,提高编译、生产打包速度

警告信息&#xff1a;[警告⚠] packageF\components\mpvue-echarts\echarts.min.js 文件体积超过 500KB&#xff0c;已跳过压缩以及 ES6 转 ES5 的处理&#xff0c;手机端使用过大的js库影响性能。 遇到问题&#xff1a;由于微信小程序引入了mpvue-echarts\echarts.min.js&…

房屋出租出售预约系统支持微信小程序+H5+APP

核心功能有&#xff1a;新盘销售、房屋租赁、地图找房、小区找房&#xff0c;地铁找房等方式。 地图找房&#xff1a;通过地图标注查看附近房源&#xff0c;方便用户根据地理位置查找合适的房产。二手房资讯&#xff1a;提供租房及二手房市场的相关资讯&#xff0c;帮助用户了…