当前位置: 首页 > news >正文

常用git命令

目录

1、常用git命令

2、git merge 和 git rebase 的区别

3、获取远程仓库数据命令 git fetch 和 git pull的区别

 4、git reset 和 git revert 的区别 


1、常用git命令

  •  git init          //初始化本地仓库
  •  git status   //查看文件状态
  • git diff    //显示工作目录中当前文件与暂存区的差异。
  • git diff --cached   //显示暂存区中文件与最后一次提交的差异。
  • git log   //查看提交的历史记录
  • git add .  //添加所有修改过的文件到暂存区
  • git add 文件名   // 添加指定文件到暂存区
  • git commit -m "提交名"   //提交暂存区的文件到本地仓库,并给本次提交取个名字
  • git checkout .   //  用暂存区中的文件覆盖工作区,即撤销工作区所做的所有修改
  • git reset HEAD .    // 用本地仓库的文件覆盖暂存区中的
  • git checkout HEAD .    // 用本地仓库的文件覆盖暂存区和工作区
  • git reset --soft commit编号    //将 HEAD 指向指定的提交,但保留暂存区和工作区的提交的状态,只删除本地仓库中的提交。(比如说有三次提交,我执行这个命令并且编号为第一次提交的编号,那么最后显示的提交信息就只有第一次提交了,但是之前做的修改还保留在暂存区和工作区),如下图:

  

  • git reset --hard commit编号   // 将 HEAD 指向指定的提交,并删除暂存区和工作区的提交状态,使其与 HEAD 一致。(将修改的代码撤销,并且把提交的记录也删掉,即三个区里面的修改都被撤销了
  • git remote add origin 远程仓库地址    //连接远程仓库
  • git tag   //创建一个标识指向当前提交
  • git branch -av   //查看当前分支信息
  • git branch dev   //创建名为dev的分支
  • git checkout dev  //切换到dev分支

  • git checkout -b 分支名    //创建分支并切换为当前分支 ( 等价于 git branch 分支名 + git checkout 分支名)

  • git merge 分支名    //将指定分支与当前分支合并
  • git rebase 分支名   //合并分支

2、git merge 和 git rebase 的区别

  • git merge

    • 将两个分支合并成一个,创建一个新的合并提交(merge commit),这个提交会包含两个分支的共同祖先以及两个分支的最新提交。
    • 它保留了分支的历史和提交顺序。

        冲突测试:

        

出现上面这种冲突你也可以不撤销合并,直接去代码中挑选保留哪一部分代码也行:

  • git rebase

    • 将一个分支上的提交重新应用到另一个分支上,而不是创建一个新的合并提交。
    • 它改变了历史,将提交重新排序和应用到新的基线上。

使用 git rebase 出现冲突时解决方法和merge差不多 :

3、获取远程仓库数据命令 git fetch 和 git pull的区别

  • git fetch

    • 用于从远程仓库获取最新的数据,包括分支和提交,但不会自动合并到本地分支。
    • 它将远程分支的更新下载到本地,但不会改变本地的工作目录。
  • git pull

    • 用于从远程仓库获取数据并自动合并到当前的本地分支。
    • 它实际上是 git fetch 后跟 git merge 的简写。

 4、git reset 和 git revert 的区别 

后面都是直接跟某次提交的编号,

总的来说就是git reset 是回到你指定的那个提交,但是如果这个项目你已经分享给团队了而且有人已经在这个提交上做了修改的话,你再回到这次提交里面就会包含了别人修改的内容,这就是改变历史。

而使用git revert 是新建一个提交,这个提交会撤销掉你指定的提交的修改,也就是不会往你之前的提交里面加东西,所以它是不会改变历史的。

  • push origin master:master   //将本地master分支推送到远程的master分支

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 提高工作效益方法(一)
  • 循环流网络的费用问题
  • JavaScript 练习题是提升编程技能的好方法
  • 华为云征文|基于Flexus云服务器X实例的应用场景-部署脚手架开源项目若依
  • ECMAScript和JavaScript区别
  • Spring 源码解读:JavaConfig与XML配置的对比实现
  • 汉诺塔递归解决思路图解分析,python代码实现
  • OceanbaseV4模拟题解析
  • Spring Bean 作用域
  • Graylog配置用户权限以及常用搜索语法
  • HTML5 为什么只需要写 <!DOCTYPE HTML>
  • Sql查询优化--索引设计与sql优化(包含慢查询定位+explain解释计划+左匹配原则+索引失效)
  • [pytorch] --- pytorch基础之tensorboard使用
  • Vue 登录状态判断与跳转指南
  • 一.海量数据实时分析-Doris入门和安装
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • java中具有继承关系的类及其对象初始化顺序
  • maven工程打包jar以及java jar命令的classpath使用
  • Sublime text 3 3103 注册码
  • TypeScript实现数据结构(一)栈,队列,链表
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 高程读书笔记 第六章 面向对象程序设计
  • 后端_ThinkPHP5
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 设计模式 开闭原则
  • 使用API自动生成工具优化前端工作流
  • 微服务入门【系列视频课程】
  • 原生Ajax
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (2)空速传感器
  • (4) PIVOT 和 UPIVOT 的使用
  • (js)循环条件满足时终止循环
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (补)B+树一些思想
  • (二)构建dubbo分布式平台-平台功能导图
  • (二)丶RabbitMQ的六大核心
  • (二十六)Java 数据结构
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (循环依赖问题)学习spring的第九天
  • (转)Google的Objective-C编码规范
  • (转载)hibernate缓存
  • (状压dp)uva 10817 Headmaster's Headache
  • .NET 通过系统影子账户实现权限维持
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .net中的Queue和Stack
  • .net中应用SQL缓存(实例使用)
  • // an array of int
  • @Mapper作用
  • @SentinelResource详解
  • []C/C++读取串口接收到的数据程序