【Git之窗】(三)几个最常用的命令解析

2024-08-26 21:18

本文主要是介绍【Git之窗】(三)几个最常用的命令解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    依稀记得上家公司入职的时候,电脑上安装了两个关于Git的软件,一个是"Git Bash",另一个是“Git Extention”,奈何用了三个月之后才顿悟,我一直在用客户端,然而Git的精髓确是命令行啊,就在刚才我画完了一张“我所理解的Git”的思维导图,发现绝大多数二级分支下都是Git的命令行,如图:

         这里暂且不对上图进行细致分析,只是为了说明命令行在git的使用过程中,才是王道!

    直到工作3个月后,我被调到了炫酷的“VRLe S”小组之后,才开始正式接触Git命令行,于是乎,我静静地卸载了Git Extention,开启了一条命令行的不归路。。。。。


    这里我按照每天工作的时间顺序,对于日常工作中最为常用的几条命令行总结:

    一、AM 9:00 上班

   (1)git pull origin master

    作为一名合格的程序员,每天晚上下班前提交自己“当天没问题”的代码,就应该像是“洗脸”、“刷牙”这样日常必备的事情一样,既然这样,同一个项目组内难免别人提交更新后的代码是对自己代码有影响的,于是乎,上班后干活前执行“git pull”命令也就是必须要做的事情了,当然,如果你开发过程中会有多个分支,比如小编在工作中就有三个分支,分别是“master”、“dev”、“htc”,建议执行git pull命令之前,先切换到git master上,别问我为啥?用久了你就知道了。


   (2)git status

    其实这个命令是该在执行git pull之前就要敲一敲的,我的感觉,git status就像是每次在桌面上点击右键刷新一样频繁。做其他事情之前都该去执行一下这个命令。

              

            如图,你发现了可能在执行git pull之前,有个东西昨天晚上忘记提交了,这就起到了这条命令的作用,同时“On branch dev”、“Changes not staged for commit”都告诉了你当前你应该去做哪些操作。


    二、AM 9:30~11:30 进入工作状态

   (1)git checkou 分支名

    比如我在和别人协同工作时,我的代码是不允许直接写在master上面的,至于为什么?1、master是要当做本地的“生成服务器”来看待的,怎么在“生产服务器”上写测试代码呢?2、提交代码之后,主线会出现“水管现象”(这个名字是我的组长的组长给起的,哈哈,一会儿讨论)。

    于是乎,我需要切换到我的开发分支,执行"git checkou dev",之后,就会显示“Switched to branch 'dev'”.如图:

                  

    表示我已经切换到我该工作的“dev”分支上面了。

    执行这个命令的前提是,你已经有了一个"dev"分支的存在,如果没有,可以执行“git checkout -b dev”,这句话表明我新建了一个分支叫做dev,同时切换过去。


   (2)git branch

    既然刚才我们讲分支切换,那么通过"git branch"命令,就能够对我当前的工作分支进行检查了,你可以了解到,你的本地仓库有多少个分支,以及当前分支是谁。

      

   (3)git rebase

    既然在master上拉去了最新代码,同时也切换到了dev开发分支,这个时候就要把最新代码同步过来啦,如图:

             


       (4)git clone

    上午上班到10点了,突然公司入职了一个“镁铝”程序员,我想公司里的男同胞们就该不淡定了,开始纷纷献殷勤,于是乎,小编开始帮她装git,之后要把组里的代码"download"下来啊,在git的世界里,这条命令叫做“git clone”,而非在做itoo时候SVN的"checkout",为啥?如图:

        看图中那个“框框”,是我在上家公司时候截的一幅图,使用“git clone”之后,你会发现,你负责的这个类,之前被叫做“扬威”、“yangwei”、“yanghe”这三个人修改过,而且是在180天之前创建的,分别在130天之前修改过一次,90天之前修改过一次……,是不是和SVN不一样呢?这样我们对于自己将要接手的新模块也知道了它的“前世与今生”,更加有利于我们去维护它。

    紧接着,就开始编程序了……


   (4)git add / git commit

    到了要吃午饭的时候了,上午的工作也完成了,那就提交到本地仓库吧,执行“git add -A”把修改的代码放到暂存区,执行“git status”,发现代码从红色变成了绿色,那就ok了.这个时候,可以执行“git commit -m '注释信息'”来将代码提交到本地仓库了。然后就和同事们吃饭去吧。



      三、PM 13:00 ~ PM14:00

   (1)git log / git lg2

    人到了这个时间点,状态往往比较懵,写代码的时候可能会将if(a == 1),写成if(a = 1),一旦提交了有问题的代码(有些错误能够瞒过编译器),你就需要git log这个命令了,但是git log有个缺点,页面布局很不清楚,这个时候,组长给我写了一行配置文件:(“~/.gitconfig”这个文件中)

## insert [alias]lg1 = log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --alllg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' -10 --alllg = !"git lg1" 
       之后,git lg2就看到了这样的界面:

          

         看到了最近的一次提交记录是67seconds之前的提交,是我再htc分支上做的,因为比较懵逼提交了错代码,我要回退到之前的代码,就引入了下面的这个命令。


    (2)git reset

    参考git lg2界面中每一次提交的哈希码(Git以HashCode作为唯一标识),我将我的代码回退到旧的版本:“git reset 8891175”,如图:

             

    可见,我的“VRLeS/server”的代码已经回退到我之前的版本了,个人建议,这个操作,谨慎!!!


   (3)git diff

    2点这个时间点确实不适合敲代码啊,适合睡觉,因为你总会忘记自己究竟改了哪些代码,所以,有了这个命令就可以比较自己未add,未commit的代码,与已经commit的代码之间的差别了。(最近eclipse上没有用git,先不上图了)


    四、PM 14:00 ~ 18:00

   (1)git rebase / git merge

    这个时候,一天的工作基本差不多完成了,对于临时加入的分支中的代码,如果测试没有问题,就可以合并到master分支当中,如图:

                 

      

   (2)git rm

    一旦“特征分支”(暂时的分支)中的代码被合并到了master中,无用的分支也就可以删除掉了,其实我们可以先手动删除,再执行“git rm”命令,就可以成功删除“特征分支”了。

    之后执行git commit,把代码提交到本地仓库中。


   (3)git push

    这个步骤也是下班前的必备操作,执行push操作,把我们今天的成果推送到服务器上去吧!

             

          好了,下班吧,回去做饭了!

    That's all.

这篇关于【Git之窗】(三)几个最常用的命令解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109702

相关文章

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

python常用的正则表达式及作用

《python常用的正则表达式及作用》正则表达式是处理字符串的强大工具,Python通过re模块提供正则表达式支持,本文给大家介绍python常用的正则表达式及作用详解,感兴趣的朋友跟随小编一起看看吧... 目录python常用正则表达式及作用基本匹配模式常用正则表达式示例常用量词边界匹配分组和捕获常用re

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

全面解析MySQL索引长度限制问题与解决方案

《全面解析MySQL索引长度限制问题与解决方案》MySQL对索引长度设限是为了保持高效的数据检索性能,这个限制不是MySQL的缺陷,而是数据库设计中的权衡结果,下面我们就来看看如何解决这一问题吧... 目录引言:为什么会有索引键长度问题?一、问题根源深度解析mysql索引长度限制原理实际场景示例二、五大解决

深度解析Spring Boot拦截器Interceptor与过滤器Filter的区别与实战指南

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现

postgresql数据库基本操作及命令详解

《postgresql数据库基本操作及命令详解》本文介绍了PostgreSQL数据库的基础操作,包括连接、创建、查看数据库,表的增删改查、索引管理、备份恢复及退出命令,适用于数据库管理和开发实践,感兴... 目录1. 连接 PostgreSQL 数据库2. 创建数据库3. 查看当前数据库4. 查看所有数据库

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM