预备知识:

  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@{}
恢复但不删除stash@{},可以使用git stash drop进行删除
git stash pop
恢复并删除stash的贮藏信息

  

  feature分支

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

git branch -D <name>

三、标签管理

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

  创建标签

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

git tag v1.

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

  

  使用

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

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

  

  使用

git show <tagName>

  查看标签信息

  

  标签操作

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

git tag -d v0.

  

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

git push origin v1.
git push origin --tags

  删除远程仓库标签

git tag -d v0. 先删除本地
git push origin :refs/tags/v0. 再删除远程

版本控制工具(下)——Git的远程仓库、分支管理与其它操作的更多相关文章

  1. Git版本控制工具(三)----远程仓库GitHub的使用

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  2. Git 远程仓库分支管理

    目录 目录 速查表 关联远程代码仓库 克隆远程仓库 分支管理 创建分支 切换分支 合并分支 删除分支 解决冲突 速查表 指令 作用 git branch 查看分支 git branch newBran ...

  3. Git remote 远程仓库链接管理

    SVN 使用单个集中仓库作为开发人员的通信枢纽,通过在开发人员的工作副本和中央仓库之间传递变更集来进行协作. 这与 Git 的分布式协作模型不同,后者为每个开发人员提供了自己的仓库副本,并具有自己的本 ...

  4. mac下git连接远程仓库gitee

    一.注册账号 https://gitee.com/ 二.创建仓库 三.创建后显示如下 四.根据页面上展示命令敲一遍就可以了. 备注:注意!!

  5. Git:六、分支管理(指针操作)

    1.基本操作 1)创建分支 git branch <name> 2)切换分支 git checkout <name> 1)&2)创建并切换分支 git checkout ...

  6. Git从远程仓库里拉取一条本地不存在的分支方法

    Git从远程仓库里拉取一条本地不存在的分支方法 从远程仓库里拉取一条本地不存在的分支时,进入到对应目录先执行git fetch然后再执行git checkout -b 本地分支名 origin/远程分 ...

  7. git clone远程仓库的指定分支

    正常clone方式 git clone <远程仓库地址> 默认clone的是远程仓库的master分支 clone指定分支 git clone -b <分支名> <远程仓 ...

  8. Git 获取远程仓库指定分支内容

    1. 在本地一个空的文件夹中 git init  (生成本地仓库) 2. 在刚刚的文件夹中随便建立一个文件 ,git add . (为了生成分支)(提交到暂存区) 3. git commit -m'1 ...

  9. 为git创建远程仓库

    首先生成ssh公钥: 将公钥添加到git: 测试秘钥是否通过: 然后就可以到web界面看到标注的地方被绿了: 但是我的没有绿,不知道为啥,难道没有女朋友的原因吗? rm -rf .ssh 重来好几遍都 ...

  10. 【版本控制工具】 Git基础

    一.Git简介 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.于是Git 成了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件. (Git目前使用率非常 ...

随机推荐

  1. 沉淀,再出发:结合案例看python

    沉淀,再出发:结合案例看python 一.前言 关于python,如果不经过大型程序开发的洗礼,我们很难说自己已经懂得了python了,因此,我们需要通过稍微结构化的编程来学习python. 二.一个 ...

  2. ZT android -- 蓝牙 bluetooth (五)接电话与听音乐

    android -- 蓝牙 bluetooth (五)接电话与听音乐 分类: Android的原生应用分析 2013-07-13 20:53 2165人阅读 评论(9) 收藏 举报 蓝牙android ...

  3. PDF文件如何转成markdown格式

    百度上根据pdf转makrdown为关键字进行搜索,结果大多数是反过来的转换,即markdown文本转PDF格式. 但是PDF转markdown的解决方案很少. 正好我工作上有这个需求,所以自己实现了 ...

  4. web自动化_浏览器驱动chromedriver安装方法(适用RF框架/Selenium/Appium)

    在进行UI自动化时,打开浏览器是第一步,这就必须要安装浏览器的驱动,chrome浏览器需要安装chromedriver,下载地址:http://chromedriver.storage.googlea ...

  5. 浅谈 JavaScript 中的继承模式

    最近在读一本设计模式的书,书中的开头部分就讲了一下 JavaScript 中的继承,阅读之后写下了这篇博客作为笔记.毕竟好记性不如烂笔头. JavaScript 是一门面向对象的语言,但是 ES6 之 ...

  6. showDoc项目文档管理工具

    1:下载showdoc代码文件 https://github.com/star7th/showdoc https://www.showdoc.cc/help?page_id=14 官方帮助文档 2:安 ...

  7. 日常踩坑——Dev C++ pow()函数的坑

    坑 Dev C++ pow()函数 那年冬天,显示屏前坐着如喽啰,那时候我含泪发誓,再也不用Dev. 蓝桥杯官网给提供的版本,没办法bug也得硬着头皮用. 16年蓝桥杯的第八题 四平方和定理: 在De ...

  8. Kali-linux使用SET实施攻击

    前面介绍了社会工程学工具包(SET)的简单使用.为了能帮助用户更容易的理解社会工程学的强大功能.本节将介绍使用社会工程学工具包实施各种攻击. 7.4.1 针对性钓鱼攻击向量 针对性钓鱼攻击向量通过构造 ...

  9. Owin+ASP.NET Identity浅析系列(五)接入第三方登录

    在今天,读书有时是件“麻烦”事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<Owin+ASP.NET Identity浅析系列>来祭奠那逝去的…… OK,用户角色实现后,我们回 ...

  10. 401. Binary Watch 回溯

    A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the bottom ...