zoukankan      html  css  js  c++  java
  • 版本控制工具(下)——Git的远程仓库、分支管理与其它操作

    预备知识:

      SSH协议参考资料http://blog.csdn.net/vevenlcf/article/details/43273405

      图解公钥和私钥:http://blog.csdn.net/linuxnews/article/details/51119862

      百度百科https://baike.baidu.com/item/ssh/10407?fr=aladdin

      基于密钥的安全验证,就是提供一对密钥,把公钥放在需要访问的服务器上,如果连接到SSH服务器上,客户端就会向服务器发出请求,
    请求用密钥进行安全验证,服务器收到请求之后,先在该服务器的主目录下寻找公钥,然后把它和发送过来的公钥进行比较。如果两个密钥一致,
    服务器就用公钥加密“质询”并把它发送给客户端。客户端收到“质询”之后就可以用私钥解密再把它发给服务器端。基于这种方式,相对比较安全。

    一、远程仓库

      在上一节已经学习了基本配置,接下来开始学习与SVN最大的不同点之一——远程仓库

       配置SSH Key

       为了学习这个,我们先创建一下SSH Key

    ssh-keygen -t rsa -C "youremail@example.com"

      一路回车,使用默认完成配置:

      

      之后,就可以看到公钥(.pub)和私钥了:

      

        在Github上配置SSH Key——允许配置多个!

      打开下图中对应的位置,输入公钥内容即可:

      

        添加远程库

      首先在github上创建一个仓库(只要输入必填的仓库名和可选的描述即可)

      

        github会给一些建议与提示等:

      

      我们根据上面的提示也可以看到将本地仓库与远程仓库关联的步骤:

      在本地仓库中运行命令关联远程仓库

    git remote add origin git@github.com:jiangbei01/myGit.git

     // 请注意用户名和仓库名,不使用github给出的https的协议原因之一是速度慢!

       将本地分支内容推送到远程仓库

    git push -u origin master

      // 然后每次都可以通过push命令同步仓库了,完美!

      从远程仓库克隆

      先在github上创建一个仓库:

      

      之后,在本地运行clone命令即可克隆仓库了!

    git clone git@github.com:jiangbei01/myCloneGit.git

     二、分支管理

      分支概念:

        分支概念部分请参见:何谓分支

         廖雪峰老师的概念讲解参见:分支管理

      分支管理:

        创建并切换到dev分支:

    git checkout -b dev

        上面的-b参数表示创建并切换,他们相当于下面的两条分开的创建与合并:

     git branch dev
     git checkout dev

        示例:

        

        查看当前分支:

    git branch

        示例:

      

      

      接下来我们在dev分支上开发,修改readme.txt的内容:

      

      正常提交(还记得怎么提交吗):

       

      再切换回主分支:

    git checkout master

      

      再次查看时发现主分支上readme.txt的内容并未添加,因为我们是在master分支上,这点可以在概念里看到具体解释

      接下来进行分支合并:git merge用于合并指定分支

    git merge dev

      

      此时,分支开发的添加内容又回来了,这里上面红框的“快进”式的添加方式后面将会补充

      分支合并完成确认后就可以删除分支了:删除现有分支之前,请切换到其他分支。

    git branch -d dev

      

       冲突解决

      创建并切换到新分支

     git checkout -b feature1

      

      修改readme.txt的最后一行(请注意ctrl+S保存):

      

      在当前分支提交:

      

      切换到master分支

    git checkout master

      

      再修改readme.txt文件

      

       同样的,提交当前分支:

       

      经历以上操作后,master和feature1分支各自都有自己的提交的分支,我们尝试进行合并

    git merge feature1

      由于修改的是同一处的内容,git无法进行快速合并,并且产生了合并的冲突!

      

      使用git status可以看到具体的冲突文件:

      

      我们打开readme.txt文件可以看到变成了冲突的版本:

      

      很明显,HEAD到=======之间是当前所在分支的版本,======到feature1之间的为对应feature1分支的版本

      当然,使用git diff也可以查看到冲突细节:

      

      我们手动处理一下冲突,处理后的结果如下:

      

      保存确认后,进行提交:

      

      可以查看当前的分支图:

    git log --graph
    git log --graph --pretty=oneline --abbrev-commit

      

      正常处理冲突正确合并后,删除分支:

    git branch -d feature1

       bug分支——现场保存

      相关情景与概念介绍请参见廖雪峰老师的:Bug分支

      修改了内容但不想提交,需要先切换到其它分支修复bug,先看下当前状态

      

      使用git stash(贮藏)

    git stash

      

      之后就可以切换分支,修复bug,修复完成后合并分支,删除临时分支,然后再回到贮藏时候所在的分支来

      回来后使用git stash list查看工作现场:

    git stash list

      

      恢复现场有两种方式:

    git stash apply stash@{0}
        恢复但不删除stash@{0},可以使用git stash drop进行删除
    git stash pop
        恢复并删除stash的贮藏信息

      

      feature分支

      想要删除一个未合并的分支,使用-D参数强行删除:

    git branch -D <name>

     三、标签管理

      Git的版本号都是一串无意义的非常大的数字,有时候难以记忆,这时就可以给特定的版本打上tag标签,进行快读定位某版本了!

      创建标签

      切换到需要的打标签的分支,使用git tag <name>进行打标签操作

    git tag v1.0

      这样默认给当前分支最新的提交打了标签,并且使用git tag可以查看所有标签(和查看分支一样)

      

      使用

    git log --pretty=oneline --abbrev-commit

      查看版本提交信息,通过commit id进行特定版本打标签

      

      使用

    git show <tagName>

      查看标签信息

      

      标签操作

      和分支操作类似的删除操作

    git tag -d v0.1

      

      推送特定分支或者全部分支到远程仓库

    git push origin v1.0
    git push origin --tags

      删除远程仓库标签

    git tag -d v0.9 先删除本地
    git push origin :refs/tags/v0.9 再删除远程
  • 相关阅读:
    61. 最长不含重复字符的子字符串
    60. 礼物的最大价值 (未理解)
    59. 把数字翻译成字符串
    58. 把数组排成最小的数
    57. 数字序列中某一位的数字 (不懂)
    spring data jpa 官方文档
    idea 编译报错 源发行版 1.8 需要目标发行版 1.8
    idea maven 依赖报错 invalid classes root
    solr
    spring boot 官方文档
  • 原文地址:https://www.cnblogs.com/jiangbei/p/7712064.html
Copyright © 2011-2022 走看看