git 常用命令有哪些

2023-08-02 16:28:36

Git 是我们开发工作中使用频率极高的工具,下面总结下他的基本指令有哪些,顺便温习一下。

前言

一般项目中长存2个分支: 主分支(master) 和开发分支(develop)

项目存在三种短期分支 :功能分支(feature branch) 补丁分支(hotfix branch) 预发分支(release branch)一旦完成开发,它们就会被合并进develop或master,然后被删除。

虽然是主分支和开发分支,却是平级关系,develop可以理解为开发库,master为生产库。

一、初始化

# 初始化本地仓库,在当前目录下生成 .git 文件夹

git init

# 查看当前分支状态
git status

 二、Git 配置

# 查看配置信息
git config <--local | --global | --system> -l   // --local:仓库级,--global:全局级,--system:系统级

# 查看当前生效的配置信息
git config -l

# 编辑配置文件
git config <--local | --global | --system> -e   // 例如 git config --system -e

# 添加配置项
git config <--local | --global | --system> --add <name> <value>

# 获取配置项
git config <--local | --global | --system> --get <name>

# 删除配置项
git config <--local | --global | --system> --unset <name>

# 配置提交记录中的用户信息
git config --global user.name <用户名>    // 例如 git config --global user.name zhangsan

git config --global user.email <用户邮箱>

# 更改Git缓存区的大小,如果提交的内容较大,默认缓存较小,提交会失败,缓存大小单位:B,例如:524288000(500MB)
git config --global http.postBuffer <缓存大小>

 三、查看日志log

# 打印所有的提交记录
git log  // Q退出记录

# 打印从第一次提交到指定的提交的记录
git log <commit ID>   // 例如 git log fec95eb

# 打印指定数量的最新提交的记录
git log -<指定的数量>  // 例如 git log -3 打印最近3条记录

# 显示指定作者的提交历史
git log --author=zhangsan

# 查看指定文件的提交历史
git log <file_name>  // 例如 git log abc.vue

# 以图形形式显示提交历史
git log --graph

 四、分支(branch)操作

# 列出本地的所有分支,当前所在分支以 "*" 标出
git branch

# 列出本地的所有分支并显示最后一次提交,当前所在分支以 "*" 标出
git branch -v

# 创建新分支
git branch <分支名>

# 修改分支名称
git branch -m <oldName> <newName>  // 例如 git branch -m master-v1 master-v2

# 强制修改分支名称
git branch -M <oldName> <newName>

# 删除指定的本地分支
git branch -d <分支名称>

# 强制删除指定的本地分支
git branch -D <分支名称>

 五、切换(checkout)分支

# 切换到已存在的指定分支
git checkout <分支名称>  // 例如 git checkout master

# 创建并切换到指定的分支,保留所有的提交记录
git checkout -b <分支名称>

# 创建并切换到指定的分支,删除所有的提交记录
git checkout --orphan <分支名称>

# 替换掉本地的改动,新增的文件和已经添加到暂存区的内容不受影响
git checkout <文件路径>

 六、克隆(clone)分支

# 默认在当前目录下创建和版本库名相同的文件夹并下载版本到该文件夹下
git clone <远程仓库的网址>

# 指定本地仓库的目录
git clone <远程仓库的网址> <本地目录>

# -b 指定要克隆的分支,默认是master分支
git clone <远程仓库的网址> -b <分支名称> <本地目录>

 七、提交(commit)操作

# 把暂存区中的文件提交到本地仓库
git commit

# 把暂存区中的文件提交到本地仓库中并添加描述信息
git commit -m "<提交的描述信息>"

# 修改上次提交的描述信息
git commit --amend

 八、合并(merge)操作

# 把指定的分支合并到当前所在的分支下,并自动进行新的提交
git merge <分支名称>

# 把指定的分支合并到当前所在的分支下,不进行新的提交
git merge --no-commit <分支名称>

# 合并分支出现冲突时,取消合并,一切回到合并前的状态
git merge --abort

九、还原(reset)提交记录

# 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
git reset <commit ID>

# 将 HEAD 的指向改变,撤销到指定的提交记录,文件也修改了
git reset --hard <commit ID>

# 回退3级
git reset --hard HEAD~3

git push -f  // 表示将目前自己本机的代码库推送到远端,并覆盖

# 撤销某次提交
git revert <commit ID>

git revert 与 git reset 最大的不同是,git revert 仅仅是撤销某次提交,而git reset会将撤销点之后的操作都回退到暂存区中

十、tag 操作

# 打印所有的标签
git tag

# 切换到指定的标签
git checkout <标签名称>

# 查看标签的信息
git show <标签名称>

# 删除指定的标签
git tag -d <标签名称>

# 将指定的标签提交到远程仓库
git push <远程仓库的别名> <标签名称>

# 将本地所有的标签全部提交到远程仓库
git push <远程仓库的别名> –tags

十一、差异对比 diff

# 比较暂存区中的文件和上次提交时的差异
git diff --cached
git diff --staged

# 查看从指定的版本之后改动的内容
git diff <commit ID>

# 比较两个分支之间的差异
git diff <分支名称> <分支名称>

十二、其他操作

# 切换分支
git switch <分支名称>  // 例如 git switch master

# checkout 和 switch 区别
// checkout 除了能切换分支,还能做代码的撤销操作,switch 是git 2.33 版本才推出的,更语义化。

# 列出已经存在的远程仓库
git remote -v

# 从远程仓库获取最新版本
git pull

# 合并分支出现冲突时,取消合并,一切回到合并前的状态
git merge --abort

# 选择一个commit,合并进当前分支
git cherry-pick <commit ID>

# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
git commit --amend -m <message>

十三、操作案例

# 克隆仓库
git clone http://www.xxx.com/abc.git

# 查看分支当前状态
git status

# 将文件添加到暂存区  .代表所有
git add .

# 把暂存区中的文件提交到本地仓库
git commit -m '添加代码备注'

# 将本地代码提交到远程仓库
git push

总结

1.养成提交描述的好习惯,一个好的提交信息可以方便他人理解您的修改,也有助于日后回顾项目历史;
2.在频繁修改的项目中,保持提交频率,避免许多修改集中在一个提交中,会增加冲突的风险;
3.使用分支开发习惯,将开发环境和生产环境分开,不要在master分支上直接进行开发;
4.当合并时出现冲突,应该及时处理。解决冲突后进行测试,确保代码正常工作;
5.每天开发完成时,更新您的本地仓库,确保与远程仓库保持同步;
6.在项目中添加适当的文档,包括README文件、代码注释和项目文档,以便团队成员能够理解项目的功能和结构。

更多推荐

【云原生系列】云计算概念与架构设计介绍

1什么是云计算云计算是一种基于互联网的计算模式,在这个模式下,各种计算资源(例如计算机、存储设备、网络设备、应用程序等)可以通过互联网实现共享和交付。云计算架构设计的主要目标是实现高效、可扩展、可靠、安全和经济的计算资源共享。2云计算架构介绍在云计算架构中,通常会采用分层的设计思路,将计算资源划分为不同的层次,每个层次

transformer系列1---Attention Is All You Need全文详细翻译

论文链接:AttentionIsAllYouNeed.代码链接:Transformer.Transformer0Abstract摘要1Introduction引言2background背景3ModelArchitecture模型架构3.2Attention注意力3.2.1ScaledDot-ProductAttenti

【Java 基础篇】Java对象反序列化流详解

在Java编程中,对象序列化和反序列化是常见的操作,用于将对象转换为字节流以便于存储或传输,并从字节流中重新构建对象。本文将重点介绍对象反序列化流的用法和相关概念,帮助基础小白理解这一重要的主题。什么是对象反序列化?对象反序列化是将之前序列化的对象字节流还原为对象的过程。这个过程是序列化的逆过程,它可以让我们重新获得原

Vue3路由

文章目录Vue3路由1.载入vue-router库2.实例2.1Vue.js+vue-router实现单页应用2.2router-link创建链接2.3router-view显示与url对应组件2.4`<router-link>`相关属性Vue3路由1.载入vue-router库Vue.js路由需要载入vue-rout

内外统一的边缘原生云基础设施架构——火山引擎边缘云

近日,火山引擎边缘云边缘计算架构师郭少巍在LiveVideoStackCon2023上海站围绕火山引擎边缘云海量分布式节点和上百T带宽,结合边缘计算在云基础设施架构方面带来的挑战,分享了面对海量数据新的应用形态对低时延和分布式架构的需求,边缘计算将成为新一代边缘计算云基础设施以及未来边缘计算发展的未来展望。近十几年众多

浏览量5.54亿,“平替大军”击退“钱包刺客”?丨小红书消费趋势分析

当代年轻人的消费观念,从贷款买大牌的“精致穷”,逐渐演变为人间清醒式地购物...他们爱上麦当劳的“穷鬼套餐”,爱喝瑞辛9.9元畅饮,爱和小学生成为“饭搭子”吃小饭桌,爱买低价打折出售的剩菜盲盒,爱出门吃饭前先查看团购套餐,似乎所有省钱技巧都被他玩得轻车熟路。是大牌不香了吗?还是当代年轻人的消费趋势有了新的变化?本篇内容

《Python趣味工具》——自制emoji(4)计算机二级考试题

前面我们学习了如何制作emoji,相信你也是有很多想法了吧!今天我们就来看看几道计算机二级考试真题。1.绘制套圈使用turtle库的circle()函数和seth()函数绘制套圈。最小的圆圈半径为10像素,不同圆圈之间的半径差是40像素。ps:注意要和题目要求的圆形方向一致哦~可以在绘制前先将方向调整为90度。示例代码

Kubernetes介绍(一)

kubernetes官网:Kubernetes1、Kubernetes是什么Kubernetes也称为K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统,k8s是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。Kubernetes可以实现以下功能:自动化容器的部署和复制

Swing程序设计详解(一)

【今日】“若你决定灿烂,山无遮,海无拦”目录初识Swing一Swing简述二Swing常用窗体2.1JFrame窗体2.2JDialog对话框2.3JOptionPane小型对话框(1)通知框(2)确认框(3)输入框(4)自定义对话框三常用布局管理器3.1绝对布局3.2流布局3.3边界布局3.4网格布局四常用面板4.1

如何实现不同MongoDB实例间的数据复制?

作为一种SchemaFree文档数据库,MongoDB因其灵活的数据模型,支撑业务快速迭代研发,广受开发者欢迎并被广泛使用。在企业使用MongoDB承载应用的过程中,会因为业务上云/跨云/下云/跨机房迁移/跨地域迁移、或数据库版本升级、数据库整合、数据库拆分、容灾等业务场景,存在MongoDB迁移或同步的业务诉求。在M

【CV、数据分析、AI产品经理】2024届校招岗位汇总

CV计算机视觉岗位数量公司岗位名称岗位职责截止日期1网易雷火人工智能算法工程师(虚拟交互/图形学和动画方向)岗位描述1.负责面向虚拟角色/虚拟人的创建(捏脸)和驱动(表情合成、动作捕捉和重定向、动作合成、舞蹈合成、物理模拟)等系统的设计和实现2.深度参与上述能力在游戏和泛娱乐产品(短视频、直播、虚拟偶像、VTuber)

热文推荐