【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

相关文章

java解析jwt中的payload的用法

《java解析jwt中的payload的用法》:本文主要介绍java解析jwt中的payload的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解析jwt中的payload1. 使用 jjwt 库步骤 1:添加依赖步骤 2:解析 JWT2. 使用 N

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll