• Git基本操作_5


    分支管理

    • 查看分支

      分支分为两种,一种是本地已经存在的,还有一种是服务器上有,但本地不存在的分支,查看的方式稍有区别。

      • 查看本地分支

        Git 查看分支的命令为 git branch,在不带参数的情况下,默认查看到的是本地分支列表,参考命令如下:

        git branch 
        

        命令执行成功之后,返回的结果如下图所示:

        image-20200331112414389

        在图中只看到一个 master 并且为绿色,说明当前本地的仓库中只有一个分支,绿色则代表当前所处的分支。

      • 查看所有分支

        git branch 中再加入一个 -a 参数,可以理解为 all 的意思,就是查看本地的分支和远程的所有分支,参考命令如下:

        git branch -a 
        

        image-20200331185338134

    • 新建分支

      • 导入远程分支

        把远程分支在本地创建,可以通过 git checkout 分支名 命令进行,这个命令其实是切换分支用的。但当它发现你本地不存在这个分支,会自动找到远程对应的分支然后在本地进行创建,参考命令如下所示:

        git checkout master
        

        在执行前,需要确保这个分支在远程或者本地已经存在,执行结果如下图所示:

        image-20200331185851596

        切换分支成功之后,会提示已经切换分支成功,以及提示当前分支对应远程的分支名。

      • 新建本地分支

        新建一个远程和本地都不存在的分支方式,和切换分支区别不大,只需要在 git checkout 分支名 中间加入参数 -b 即可。通过这种方式,创建的分支结构和内容会与当前所在的分支一模一样,也就是说,它其实就是复制了当前的分支[相当于执行了$ git branch dev$ git checkout dev],参考命令如下:

        git checkout -b dev
        

        在命令执行之后,参考结果如下图所示:

        image-20200331190231651

        在提示中,同样可以看到会显示切换分支成功,但没有提示对应远程的分支名,因为远程现在还不存在这个分支。所以此时如果使用 git push 是不能直接推送的,需要在第一次推送的时候指定远程分支名,参考命令如下图所示:

        git push --set-upstream origin dev
        
    • 合并分支

      假设我目前有三个分支,分别是:master生产环境、dev开发环境、test bug 修复分支。现在如果在 test 分支中修复了 BUG,需要发布到线上生产服务器上,那么就需要通过合并分支的方式将test分支的代码合并到 master 分支中去。

      • 合并代码

        合并的时候, Git 会对比两个分支代码的差异,当 test 分支处于比较新的状态时候,Git 会将 test 分支的代码和提交记录复制到 master 分支中来,合并代码的参考命令如下:

        git merge test
        

        在没有代码冲突的情况下,执行合并命令的返回结果信息如下图所示:

        image-20200331191107685

      • 查看合并记录

        在代码合并之后,可以通过 git log 方式查看到合并记录。

    • 删除分支

      一般用来修复 BUG 的分支,我们可以把它当做是一个临时分支,当合并到 master 之后,就可以删除掉它了,这样可以减少 Git 仓库的体积。删除分支有两种方式,普通删除和强制删除。

      • 普通删除

        Git 中删除分支的命令为git branch -d 分支名,其中参数-d代表的是普通删除。一般情况下,删除使用普通删除即可。普通删除相对来说比较安全,避免造成数据丢失的情况,参考命令如下:

        git branch -d [分支名]
        
      • 强制删除

        在极少数情况下你可能会遇到普通删除无法将分支删除的情况,这个时候你可以将-d替换成-D,这样就可以进行强制删除,参考命令如下:

        git branch -D [分支名]
        
    • 推送分支到远程仓库

      如果想要将本地新建的分支推送到并不存在该分支的远程仓库当中, 可以使用下面的命令:

      git push --set-upstream origin [分支命]
      

    比较两个分支之间差异的部分

    • 查看文件之间的差异

      有时候,如果想知道当前的分支与另外一个分支,有哪几个文件不一样,这个时候可以使用如下参考命令:

      git diff [分支1] [分支2]  --stat
      

      命令执行之后,返回结果如下图所示:

      image-20200403135957349

      image-20200403135529904

    • 显示文件具体修改

      通过前面的文件修改差异,如果已经知道了有哪些文件被修改了,现在又想知道某一个文件具体被修改了什么内容,此时可以参考如下命令:

      git diff [分支1] [分支2] [要查看的文件]
      

      在命令中使用了 master 分支最新的代码与 dev 分支最新的代码进行对比,同时传递了一个文件名,因此这里只会展示此文件的具体修改内容,返回结果如下所示:

      image-20200403140107349

      image-20200403140040465

    • 显示全部文件的修改

      如果不填文件名,就会查看所有文件的修改,参考命令如下:

      git diff [分支1] [分支2]
      
    • 查看新纪录

      有些时候,如果忘记了提交了几次修改,此时就可以通过查看分支中有的记录而在生产分支中没有的记录,参考命令如下:

      git log [分支1] ^[分支2]
      
    • 单纯比较差异

      有些时候,如果只想知道两个分支记录有什么不一样,参考命令如下所示:

      git log [分支1]...[分支2]
      

      如果在命令中加入--left-right参数,这样在战时没调查已记录的时候,都能看除这条记录所属的分支,参考命令如下:

      git log -left-right [分支1]...[分支2]
      

    清理分支

    ​ 在开发的过程中,我们往往会创建多个分支,随着时间的积累,这些分支可能会变得越来越多,可以 对这些分支进行清理。

    • 删除远程分支

      很多时候如果删除分支实际上只是在本地将分支删除,但远程依然会存在,如果确认远程也不需要该分支可以手动删除一下,一般有两个步骤需要操作,首先查看远程分支列表,参考命令如下:

      git branch -a
      

      执行命令后,结果如下图所示:

      image-20200403145535887

      远程都是以 remotes 开头的,把需要删除的分支记录下来,然后执行删除远程分支命令,参考命令如下:

      git push origin --delete [要删除的分支]
      

      执行命令后,结果如下图所示:

      image-20200403145729680

    • 清理本地分支

      有些时候,会由于种种原因某些分支已经不再使用,从远程服务器上已经删除了。如果在本地一个一个的做清理会比较乱,这个时候可以将本地分支和远程分支做对比,根据远程仓库是否删除过该分支来作为依据,如果远程仓库不存在则删除该分支,反之则留下来该分支。

      首先可以使用查看远程仓库的信息,参考命令如下 :

      git remote show origin
      

      执行命令后,我们可以看到origin 的具体地址,远程分支列表,以及本地分支与远程分支相对应的关联关系等信息,如下图所示:

      image-20200403151121261

      此时可以使用git remote prune origin命令,执行此命令以后,Git 会将拉取远程的分支信息与本地的进行对比,当发现远程的分支已经删除,便会对本地的分支进行标注;之后使用git branch -vv命令可以查看关联失效的分支。如下图所示:

      image-20200403152555663

      image-20200403153454751

      在分支列表中,test 分支后面有一个 :gone 的标识,说明远程分支已经被删除,通过这个标识就可以很清晰的知道该需要删除哪些分支,之后再对这些分支进行清理就好了。

  • 相关阅读:
    codefroces 946F Fibonacci String Subsequences
    [HNOI2010]MATRIX 矩阵
    [HNOI2010]STONE取石头游戏
    [HNOI2010]PLANAR
    [HNOI2010]BUS 公交线路
    [HNOI2010]CHORUS 合唱队
    [HNOI2011]赛车游戏
    [HNOI2011]数矩形
    [HNOI2012]与非
    [BZOJ4200][NOI2015]小园丁与老司机
  • 原文地址:https://www.cnblogs.com/grubber/p/12607647.html
Copyright © 2020-2023  润新知