Git常用命令

以下是常用Git命令大全的扩展和优化版本,以便更好地查阅和理解。


目录

  1. 初始化与配置
  2. 克隆与远程仓库管理
  3. 基本操作
  4. 分支管理
  5. 标签管理
  6. 查看与比较
  7. 撤销与重置
  8. 存储与恢复
  9. 高级操作
  10. Git别名与配置优化
  11. 常用技巧与最佳实践

1. 初始化与配置

1.1 初始化本地Git仓库
git init                # 初始化当前目录为Git仓库
git init [project-name] # 在指定目录创建Git仓库
git init --bare         # 创建一个裸仓库(不包含工作区)
1.2 配置用户信息
git config --global user.name "你的用户名"       # 配置全局用户名
git config --global user.email "你的邮箱@域名.com" # 配置全局用户邮箱
1.3 配置Git行为
git config --global color.ui true                # 启用彩色输出
git config --global core.editor vim              # 设置默认编辑器为Vim
git config --global merge.tool vimdiff          # 设置默认合并工具
git config --global alias.co checkout            # 创建别名:git co = git checkout
git config --global alias.br branch               # 创建别名:git br = git branch
git config --global alias.ci commit               # 创建别名:git ci = git commit
git config --global alias.st status               # 创建别名:git st = git status
1.4 查看和编辑配置
git config --list             # 显示所有配置
git config -e [--global]      # 编辑配置文件
git config --global --unset http.proxy # 移除Git的代理配置

2. 克隆与远程仓库管理

2.1 克隆远程仓库
git clone git+ssh://git@192.168.53.168/VT.git # 克隆远程仓库
git clone [url]                              # 克隆远程仓库到当前目录
git clone [url] [directory]                  # 克隆远程仓库到指定目录
2.2 添加远程仓库
git remote add origin git@github.com:用户名/仓库.git    # 添加名为origin的远程仓库
git remote add [shortname] [url]                       # 添加一个新的远程仓库并命名
2.3 查看远程仓库
git remote -v                # 显示所有远程仓库的URL
git remote show [remote]     # 显示指定远程仓库的详细信息
2.4 修改远程仓库
git remote set-url origin git@github.com:用户名/新仓库.git # 修改origin的URL
2.5 删除远程仓库
git remote rm origin          # 删除名为origin的远程仓库

3. 基本操作

3.1 查看状态
git status          # 查看当前版本状态(是否修改)
3.2 添加文件
git add xyz         # 添加xyz文件至index
git add .           # 添加当前目录下所有更改过的文件至index
git add -p          # 交互式选择添加部分更改
3.3 提交更改
git commit -m '提交信息'                  # 提交
git commit --amend -m '修改后的提交信息'   # 修改上一次提交
git commit -am '提交信息'                  # 添加并提交所有已跟踪文件的更改
3.4 删除文件
git rm xxx          # 删除index中的文件
git rm -r *         # 递归删除
git rm --cached [file] # 停止追踪指定文件,但保留在工作区
3.5 查看提交日志
git log             # 显示提交日志
git log -1          # 显示最近一次提交
git log -5          # 显示最近五次提交
git log --stat      # 显示提交日志及相关变动文件
git log -p -m       # 显示提交的详细差异
3.6 查看帮助
git --help          # 查看Git帮助
git help [command]  # 查看特定命令的帮助

4. 分支管理

4.1 查看分支
git branch                # 列出所有本地分支
git branch -a             # 列出所有分支,包括远程分支
git branch -r             # 列出所有远程分支
git branch --contains [commit] # 显示包含某次提交的分支
git branch --merged       # 显示所有已合并到当前分支的分支
git branch --no-merged    # 显示所有未合并到当前分支的分支
4.2 创建分支
git branch [branch-name]                        # 创建一个新的分支
git checkout -b [branch-name]                    # 创建并切换到新分支
git branch [branch] [commit]                     # 创建一个指向特定commit的新分支
git branch --track [branch] [remote/branch]      # 创建一个跟踪远程分支的新分支
4.3 切换分支
git checkout [branch-name]    # 切换到指定分支
git checkout -               # 切换到上一个分支
4.4 重命名分支
git branch -m [旧名称] [新名称]  # 重命名本地分支
4.5 删除分支
git branch -d [branch-name]    # 删除已合并的分支
git branch -D [branch-name]    # 强制删除分支
git push origin --delete [branch-name]  # 删除远程分支

5. 标签管理

5.1 查看标签
git tag                     # 列出所有标签
git tag -l "v1.*"           # 列出匹配模式的标签
5.2 创建标签
git tag [tag]               # 创建轻量标签
git tag -a [tag] -m "说明"   # 创建带注释的标签
git tag [tag] [commit]      # 在指定commit上创建标签
5.3 删除标签
git tag -d [tag]                             # 删除本地标签
git push origin --delete refs/tags/[tag]      # 删除远程标签
5.4 查看标签详情
git show [tag]               # 显示标签的详细信息
5.5 推送标签
git push origin [tag]         # 推送指定标签到远程仓库
git push origin --tags        # 推送所有本地标签到远程仓库

6. 查看与比较

6.1 查看差异
git diff                     # 显示工作目录和暂存区的差异
git diff --cached            # 显示暂存区和上一次提交的差异
git diff HEAD                # 显示工作目录和上一次提交的差异
git diff [branch1]...[branch2] # 比较两个分支之间的差异
git diff --stat              # 仅显示差异的文件统计信息
6.2 查看提交详情
git show [commit]            # 显示某次提交的详细内容
git show [commit]:[file]     # 显示某次提交时文件的内容
6.3 查看分支历史
git log --graph --oneline --all    # 图形化显示所有分支的提交历史
git log --pretty=format:'%h %s' --graph  # 自定义格式显示提交历史
6.4 搜索内容
git grep "delete from"                # 在文件中搜索特定文本
git grep -e '#define' --and -e SORT_DIRENT # 结合条件搜索

7. 撤销与重置

7.1 撤销更改
git checkout [file]                # 恢复暂存区的指定文件到工作区
git checkout [commit] [file]       # 恢复某个commit的指定文件
git checkout .                     # 恢复暂存区的所有文件到工作区
git reset [file]                   # 重置指定文件的暂存状态
7.2 重置分支
git reset [commit]                 # 重置当前分支的指针到指定commit,暂存区不变,工作区不变
git reset --soft [commit]          # 重置分支指针,保留暂存区和工作区的更改
git reset --mixed [commit]         # 默认选项,重置分支指针和暂存区,工作区不变
git reset --hard [commit]          # 重置分支指针、暂存区和工作区到指定commit
git reset --keep [commit]          # 重置HEAD为指定commit,但保持暂存区和工作区不变
7.3 撤销提交
git revert [commit]                # 创建一个新的提交,撤销指定commit的更改
git revert HEAD                    # 撤销最近一次提交

8. 存储与恢复

8.1 暂存与恢复更改
git stash                         # 暂存当前未提交的更改
git stash list                    # 查看所有stash
git stash show -p stash@{0}       # 查看指定stash的内容
git stash apply stash@{0}          # 应用指定的stash
git stash pop                     # 应用最近的stash并删除
git stash drop stash@{0}           # 删除指定的stash
8.2 备份与恢复数据
# 备份数据卷
docker run --rm -v data:/data -v $(pwd):/backup alpine tar czf /backup/data_backup.tar.gz /data# 恢复数据卷
docker run --rm -v data:/data -v $(pwd):/backup alpine tar xzf /backup/data_backup.tar.gz -C /data

9. 高级操作

9.1 Git Rebase
git rebase [base-branch]          # 将当前分支的提交移到base-branch之上
git rebase -i [commit]            # 交互式rebase,修改提交历史
9.2 Git Bisect
git bisect start                   # 开始二分查找
git bisect bad [commit]            # 标记坏的提交
git bisect good [commit]           # 标记好的提交
# Git会自动切换到中间提交,测试后继续标记
git bisect reset                   # 结束二分查找,回到原始分支
9.3 Git Cherry-pick
git cherry-pick [commit]           # 将指定commit的更改应用到当前分支
9.4 Git Submodule
git submodule add [url] [path]      # 添加子模块
git submodule update --init        # 初始化子模块
git submodule foreach 'git pull'    # 更新所有子模块
9.5 Git Hooks
# 进入hooks目录
cd .git/hooks# 编辑pre-commit钩子
vim pre-commit# 添加可执行权限
chmod +x pre-commit

10. Git别名与配置优化

10.1 创建别名
git config --global alias.co checkout      # git co = git checkout
git config --global alias.br branch         # git br = git branch
git config --global alias.ci commit         # git ci = git commit
git config --global alias.st status         # git st = git status
git config --global alias.lg "log --graph --pretty=format:'%h %ad | %s%d [%an]' --date=short" # git lg = 自定义日志格式
10.2 优化配置
# 启用自动补全(需安装bash-completion)
echo "source /usr/share/bash-completion/completions/git" >> ~/.bashrc# 设置颜色主题
git config --global color.ui true

11. 常用技巧与最佳实践

11.1 使用Git stash管理临时更改
git stash save "描述"          # 保存当前更改并附加描述
git stash apply stash@{n}      # 应用指定的stash
11.2 使用Git reflog恢复丢失的commit
git reflog                    # 查看所有HEAD的移动记录
git checkout [commit]         # 恢复到特定的commit
11.3 清理无用的对象
git gc                        # 垃圾回收,优化仓库
git prune                     # 删除无法到达的对象
git fsck                      # 检查仓库的完整性
11.4 使用Git blame追踪代码修改
git blame [file]              # 查看每一行的最后修改者和提交
11.5 使用Git bisect定位问题
git bisect start
git bisect bad                  # 当前版本有问题
git bisect good [commit]        # 指定一个已知好的提交
# 依次测试并标记
git bisect reset                 # 重置状态
11.6 管理大文件
git lfs install                # 安装Git LFS
git lfs track "*.psd"           # 跟踪特定类型的大文件
git add .gitattributes          # 添加LFS配置文件
11.7 保持提交历史整洁
  • 经常提交:避免一次性提交大量更改,保持每次提交逻辑清晰。
  • 编写有意义的提交信息:清晰描述每次提交的目的和内容。
  • 使用分支进行开发:在功能分支上开发,完成后合并到主分支,保持主分支稳定。

总结

这份常用Git命令大全涵盖了从初始化仓库、配置用户信息、基本操作到高级操作、别名设置以及常用技巧和最佳实践的各类Git命令和操作。掌握这些命令和技巧将极大提升在版本控制和代码管理方面的效率与能力。

:部分高级命令和操作需要更深入的理解和谨慎使用,尤其是涉及历史重写(如git reset --hardgit rebase等)。建议在执行这些操作前,备份重要数据或在安全的环境中进行测试。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

llama-2-7b权重文件转hf格式及模型使用

目录 1. obtain llama weights 2. convert llama weights files into hf format 3. use llama2 to generate text 1. obtain llama weights (1)登录huggingface官网,搜索llama-2-7b (2)填写申请表单,VP…

图形化数据报文转换映射工具

目录 概要整体架构流程技术名词解释技术细节小结 概要 在当今数字化时代,数据的处理和分析是企业、科研机构以及各类组织日常运营的核心环节。数据来源广泛,格式多样,常见的数据格式包括XML(可扩展标记语言)和JSON&a…

计算机视觉算法实战——无人机检测

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ ​ 1. 引言✨✨ 随着无人机技术的快速发展,无人机在农业、物流、监控等领域的应用越来越广泛。然而,无人机的滥用也带…

我谈概率论与数理统计的知识体系

学习概率统计二十多年后,在廖老师的指导下,厘清了各章之间的关系。本来就是一条线两个分支,脉络很清晰。 分支一:从随机现象到样本空间到随机事件再到概率。 从随机事件到随机变量:为了进行定量的数学处理&#xff0…

docker ubuntu:20.04构建c++ grpc环境

由c grpc必须源码编译,ubuntu版本不同可能出现的问题也不同,这里分享下我的构建过程。 我是vscode结合docker去安装c虚拟环境,我不想污染本机环境。 vscode的插件Dev Containers Dockerfile如下(如果单纯是ubuntu环境构建,可忽略该…

使用KNN实现对鸢尾花数据集或者自定义数据集的的预测

创建自定义数据集: point1[[7.7,6.1],[3.1,5.9],[8.6,8.8],[9.5,7.3],[3.9,7.4],[5.0,5.3],[1.0,7.3]] point2[[0.2,2.2],[4.5,4.1],[0.5,1.1],[2.7,3.0],[4.7,0.2],[2.9,3.3],[7.3,7.9]] point3[[9.2,0.7],[9.2,2.1],[7.3,4.5],[8.9,2.9],[9.5,3.7],[7.7,3.7],[9.…

Go学习:常量

变量:程序运行期间,可以改变的量,变量声明需要使用 var 常量:程序运行期间,不可以改变的量,常量声明需要使用 const 目录 1. 常量不允许修改 2. 常量赋值不使用 : 3. 常量能够自动推导类型 1. 常量不允许…

钉钉群机器人设置——python版本

钉钉群机器人设置——python版本 应用场景钉钉界面操作程序开发效果展示 应用场景 由于工作需要,很多项目执行程序后出现报错信息无法第一时间收到,因此实时预警对于监控程序还是有必要。(仅个人观点) 参考文档及博客&#xff1a…

Effective Python系列(1.1):区别bytes和str

本篇文章是 Effective Python 这本书的第一章,本章的主要内容是什么样的代码风格才是比较符合 Python 语言。 在 Python 当中,bytes 和 str 是两种不同的数据结构。使用时,需要注意两者区别: bytes 包含的是由 8 位值所组成的序列…

vue + element-ui 组件样式缺失导致没有效果

失效 代码: 修改方法: 在main.js文件里面加上: import element-ui/lib/theme-chalk/index.css; 最后:

Formality:不可读(unread)的概念

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482https://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 在Formality中有时会遇到不可读(unread)这个概念,本文就将对此…

机器学习 vs 深度学习

目录 一、机器学习 1、实现原理 2、实施方法 二、深度学习 1、与机器学习的联系与区别 2、神经网络的历史发展 3、神经网络的基本概念 一、机器学习 1、实现原理 训练(归纳)和预测(演绎) 归纳: 从具体案例中抽象一般规律…

OpenCV:高通滤波之索贝尔、沙尔和拉普拉斯

目录 简述 什么是高通滤波? 高通滤波的概念 应用场景 索贝尔算子 算子公式 实现代码 特点 沙尔算子 算子公式 实现代码 特点 拉普拉斯算子 算子公式 实现代码 特点 高通滤波器的对比与应用场景 相关阅读 OpenCV:图像滤波、卷积与卷积核…

豆包MarsCode 蛇年编程大作战 | 高效开发“蛇年运势预测系统”

🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 豆包MarsCode 蛇年编程大作战 | 🐍 蛇年运势预测 在线体验地址:蛇年…

开源鸿蒙开发者社区记录

lava鸿蒙社区可提问 Laval社区 开源鸿蒙项目 OpenHarmony 开源鸿蒙开发者论坛 OpenHarmony 开源鸿蒙开发者论坛

关于CAN(FD)转以太网详细介绍

一、功能描述 CANFD 完全向下兼容 CAN ,以下统称 CAN(FD) 。 SG-CAN(FD)NET-210 是一款用来把 CANFD 总线数据转为网口数据的设备。 网口支持 TCP Sever 、 TCP Client 、 UDP Sever 、 UDP Client 四种模式。 可以通过软件配置和 Web 网页配置。 两路…

简洁实用的wordpress外贸模板

简洁、实用、大气的wordpress外贸模板,适合跨境电商搭建外贸B2B产品展示型网站。 简洁实用的wordpress外贸模板 - 简站WordPress主题简洁、实用、大气的wordpress外贸模板,适合跨境电商搭建外贸B2B产品展示型网站。https://www.jianzhanpress.com/?p828…

编程界“华山论剑”:PHP与Go,谁主沉浮?

在编程的广阔天地里,选择一门合适的编程语言就如同为一场冒险挑选趁手的武器,至关重要却又常常令人纠结。当我们面对 PHP 与 Go 这两种备受瞩目的编程语言时,这种纠结愈发明显:PHP,作为 Web 开发领域的老牌劲旅&#x…

QT6 + CMAKE编译OPENCV3.9

参考文档 [1] https://blog.csdn.net/rjkf_css/article/details/135676077 前提条件 配置好相关运行环境:QT6、OPENCV3.9的sources文件 OPENCV下载网页:https://opencv.org/releases/ QT6下载教程:https://blog.csdn.net/caoshangpa/article…

Python数据可视化(够用版):懂基础 + 专业的图表抛给Tableau等专业绘图工具

我先说说文章标题中的“够用版”啥意思,为什么这么写。 按照我个人观点,在使用Python进行数据分析时,我们有时候肯定要结合到图表去进行分析,去直观展现数据的规律和特定,那么我们肯定要做一些简单的可视化&#xff0…