zoukankan      html  css  js  c++  java
  • 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 的标识,说明远程分支已经被删除,通过这个标识就可以很清晰的知道该需要删除哪些分支,之后再对这些分支进行清理就好了。

  • 相关阅读:
    准备 FRM 考试——方法、工具与教训
    930. 和相同的二元子数组 前缀和
    1906. 查询差绝对值的最小值 前缀和
    剑指 Offer 37. 序列化二叉树 二叉树 字符串
    815. 公交路线 BFS
    518. 零钱兑换 II dp 完全背包
    1049. 最后一块石头的重量 II dp
    5779. 装包裹的最小浪费空间 二分
    5778. 使二进制字符串字符交替的最少反转次数 字符串 滑动窗口
    474. 一和零 dp
  • 原文地址:https://www.cnblogs.com/grubber/p/12607647.html
Copyright © 2011-2022 走看看